在 Javascript(严格模式)中未调用重写函数
Overridden function not getting called in Javascript (strict mode)
我 运行 遇到一个问题,即覆盖的函数没有被调用。
基本实现如下。
// I have a base file that defines and exports a function like this
function a() {
// do something
}
module.exports = {
a: a,
b: function () {
$('body').on('some_event', function (e, response) {
// do something
// call a
a();
});
}
}
重写如下
// I need to override the function a() and here is what I am doing
var base = require('mystuff/base');
function a() {
// override implementation
}
base.a = a;
module.exports = base;
当在页面上引发 some_event
时,b()
会执行,并且在最后一步中它会在基础实现中执行 a()
,而不是被覆盖的实现。
有人能告诉我如何修复上面的代码,使其在引发事件时执行覆盖的函数吗?函数 b()
应该执行,并且在它的最后一步应该执行覆盖的 a()
.
您只需要进行一些更改。我在下面稍微清理了代码。显着的变化是改变对 a()
:
调用的引用
注意:根据 OP 评论编辑。
class Base {
a() {
console.log('in mystuff/base a()');
}
b() {
setTimeout(this.a, 2000);
}
}
你可以在这个repl看到这个作品:
我 运行 遇到一个问题,即覆盖的函数没有被调用。
基本实现如下。
// I have a base file that defines and exports a function like this
function a() {
// do something
}
module.exports = {
a: a,
b: function () {
$('body').on('some_event', function (e, response) {
// do something
// call a
a();
});
}
}
重写如下
// I need to override the function a() and here is what I am doing
var base = require('mystuff/base');
function a() {
// override implementation
}
base.a = a;
module.exports = base;
当在页面上引发 some_event
时,b()
会执行,并且在最后一步中它会在基础实现中执行 a()
,而不是被覆盖的实现。
有人能告诉我如何修复上面的代码,使其在引发事件时执行覆盖的函数吗?函数 b()
应该执行,并且在它的最后一步应该执行覆盖的 a()
.
您只需要进行一些更改。我在下面稍微清理了代码。显着的变化是改变对 a()
:
注意:根据 OP 评论编辑。
class Base {
a() {
console.log('in mystuff/base a()');
}
b() {
setTimeout(this.a, 2000);
}
}
你可以在这个repl看到这个作品: