仅访问app.test变量时,如何替换其内部的this.init函数?
无需移动文件的解决方案
当然可以不用动vendor目录的文件,直接修改app.test内部的init函数,分两种场景处理:
1. 替换已创建实例的init方法
如果已经生成了app.test的实例,直接给实例的init属性重新赋值就行:
// 假设已经有实例 const myTestInstance = new app.test(); // 替换成你的自定义init myTestInstance.init = function() { // 这里写你的自定义逻辑 console.log("自定义init执行"); // 如果需要保留原init的功能,可以先存下原方法再调用 // const originalInit = myTestInstance.init; // originalInit.call(this); // 保证this指向当前实例 };
2. 让所有新实例自动使用自定义init
要是想让后续新建的app.test实例都默认用你的init,可以重写构造函数:
// 先把原构造函数存起来 const OriginalTestConstructor = app.test; // 重写app.test构造函数 app.test = function() { // 先调用原构造函数,初始化原有的属性和方法 OriginalTestConstructor.call(this); // 替换init方法 this.init = function() { // 你的自定义逻辑 console.log("所有新实例都会用这个init"); // 要保留原逻辑的话,提前存原init再调用 // const originalInit = this.init; // originalInit.call(this); }; }; // 继承原原型上的方法(如果原构造函数有原型方法的话) app.test.prototype = OriginalTestConstructor.prototype; app.test.prototype.constructor = app.test;
这样不管是已有实例还是新创建的实例,都能替换init函数,完全不用移动第三方文件。
内容的提问来源于stack exchange,提问作者Ashler2
相关产品推荐
相关产品推荐

