gpt4 book ai didi

JavaScript setInterval 范围问题 : an alternative to bind

转载 作者:行者123 更新时间:2023-11-30 08:49:30 25 4
gpt4 key购买 nike

我只是使用绑定(bind)方法更正了我的 JavaScript 类中的范围问题,该绑定(bind)方法将 setInterval 调用的函数置于正确的范围内。但是 seams bind 来得早(我认为是 1.8.4),我担心浏览器的兼容性。

还有其他较旧的选择吗?我应该忘记旧浏览器吗?

例子:

function MyClass(SomeText){
this.text = SomeText;
}

MyClass.prototype.test = function(){
console.log("The text: "+this.text);
}

MyClass.prototype.initialize = function(){
setInterval(this.test.bind(this), 1000);
}

var Test = new MyClass("my thoughts");
Test.initialize();

最佳答案

替代方案是一个很好的闭包:

MyClass.prototype.initialize = function(){
var myClassInstance = this;
setInterval(function() {
myClassInstance.test()
}, 1000);
}

不是很漂亮,但可以跨浏览器工作。

如果你想要类似于绑定(bind)的东西,你可以创建自己的函数来实现,或者使用 the polyfill found at MDN .如果您使用的是 jQuery,则可以使用 $.proxy , 做同样的事情。

关于JavaScript setInterval 范围问题 : an alternative to bind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19147877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com