如何执行/覆写匿名函数中声明的JavaScript函数
调用/覆写匿名函数内的
openProfile方法 先拆解你的代码结构:这是类模块化的导出逻辑,最终把包含init和openProfile的对象赋值给了t.default(这里的t相当于模块的导出载体,类似CommonJS里的module.exports)。
调用openProfile的两种场景
- 模块内部调用:
要么直接在模块里用t.default.openProfile(参数),要么在init这类方法里用this.openProfile(参数)——因为init里的this指向的就是那个导出的对象。 - 模块外部调用:
先拿到模块的导出对象(比如用import或require引入模块),然后直接调用:// 假设引入后得到的对象是profileModule profileModule.openProfile('用户ID');
覆写openProfile方法
不管是内部还是外部,核心都是先拿到那个导出的对象,直接替换openProfile属性就行:
// 先保留原方法(后续需要调用原逻辑的话) const originalOpenProfile = profileModule.openProfile; // 覆写方法 profileModule.openProfile = function(target) { // 可选:调用原方法的逻辑 originalOpenProfile.call(this, target); // 添加你的自定义逻辑 console.log('这是覆写后的openProfile逻辑'); };
如果是在模块内部覆写,就在t.default赋值之后直接修改:
t.default = { init: function() { /* ... */ }, openProfile: function(t) { /* 原逻辑 */ } }; // 内部覆写 t.default.openProfile = function(t) { // 你的自定义逻辑 };
核心要点
代码里的Object.defineProperty(t, "__esModule", { value: !0 })说明这是模拟ES模块的导出,所以t.default就是模块的默认导出对象,只要能访问到t或者模块的导出结果,就能对openProfile进行调用和修改。
内容的提问来源于stack exchange,提问作者Сорок два
相关产品推荐
相关产品推荐

