【发布时间】:2016-12-11 22:24:21
【问题描述】:
我查看了多个参考资料,但找不到解决方案!
我无权访问原始原型代码
编辑:
假设我的代码库中已经存在以下内容:
(function(){
function Test() {
this.game = 'rods';
}
Test.prototype.fail = function() {
setInterval(function() {
console.log('A', this.game);
}, 300);
}
var test = new Test();
test.fail();
})();
我无权访问原始声明,这在我的代码库之外,我想要实现的是一种覆盖失败方法的默认功能的方法,但仍保留 THIS 关键字的实例.
我尝试了很多不同的东西,我的目标是这样的:
setTimeout(function() {
Test.prototype.fail = function() {
setInterval(function() {
console.log('B', this.game);
}, 1000);
}
}, 1000);
我希望看到完全相同的输出,只是输出现在应该以 B 而不是 A
为前缀我希望这很清楚。
【问题讨论】:
-
不要
.bind,一切都应该正常工作 -
它不起作用@JaromandaX
-
不是当你像
Utilities.prototype.add()这样调用它时......你需要实例化一个像var x = new Utiltiies()这样的对象,然后x.add()将执行你的代码 -
我无法创建新实例,它需要在原来从@JaromandaX 调用的地方调用它
-
更改原型不会停止间隔-但如果您在一秒钟后
test.fail(),您应该在控制台上看到B rods-初始失败函数输出A undefined的原因是因为@间隔回调中的 987654331@ 不是您认为的那样(在您的代码案例中,它是窗口,如果您处于严格模式,则未定义)
标签: javascript methods prototype function-prototypes