JavaScript setInterval 范围问题:绑定的替代方案
JavaScript setInterval scope issue: an alternative to bind
我只是用绑定方法纠正了JavaScript类中的一个范围问题,该方法将setInterval调用的函数放在正确的范围内。但它接缝绑定来得很早(我认为是 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);
}
不是很漂亮,但确实可以跨浏览器工作。
如果你想要类似于绑定的东西,你可以创建自己的函数来做到这一点,或者使用在 MDN 中找到的 polyfill。如果你使用的是jQuery,你可以使用$.proxy
,它做同样的事情。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- react.js中的密钥绑定
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 将事件处理程序绑定到任何可能的事件
- AngularJS指令只识别双向绑定类型
- Telerik rad组合框多列数据绑定
- 对API数据使用声明性绑定
- JavaScript setInterval 范围问题:绑定的替代方案
- 用于绑定 JS 对象以进行回调的解决方案
- 解除绑定实际上并不起作用:还有其他解决方案吗
- Node.js解决方案用于XMPP BOSH预绑定以返回SID和RID
- 如何将菜单项绑定到同一解决方案中的另一个项目
- 角度双向数据绑定的替代方案
- 除了绑定之外,任何其他上下文解析的解决方案都在承诺中
- angular和样式表之间的双绑定解决方案