You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅访问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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:27:22