javascript作用域问题,带有;这";
这是我的密码:javascript作用域问题,带有;这";,javascript,Javascript,这是我的密码: var timer = { i: "Hello", start: function() { var self = this; window.setInterval(self.tick, 1000); }, tick: function() { console.log(this.i); } } timer.s
var timer =
{
i: "Hello",
start: function()
{
var self = this;
window.setInterval(self.tick, 1000);
},
tick: function()
{
console.log(this.i);
}
}
timer.start();
为什么javascript控制台显示
未定义的
?您传递的是对的引用,而不是范围。尝试:
start: function(){
var self = this;
window.setInterval(function(){self.tick();}, 1000);
}
或者使用(首先查看浏览器兼容性)将此.i更改为timer.i
或者使用对象声明,如
function timer() {
var self = this;
.. etc.
建议更改window.setInterval(self.tick,1000)代码>到
window.setInterval(self.tick.bind(self), 1000);
因为JavaScript中的与大多数其他语言中的工作方式不同。看见