function Person(name) {
this.name = name;
}
Person.prototype.showName = function() {
alert(this.name);
}
var mike = new Person("mike");
mike.showName();
window.name = "window";
setTimeout(mike.showName, 5000);
Run Code Online (Sandbox Code Playgroud)
什么时候
setTimeout(mike.showName, 5000)
Run Code Online (Sandbox Code Playgroud)
执行,为什么结果"窗口"?谢谢.
保罗,因为setTimeout在窗口范围内运行.该方法也可以通过window.setTimeout()调用.因此,当调用mike.showName时,这将引用窗口对象,而不是Person对象.
您可以使用包装函数来解决此问题:
window.setTimeout(function()
{
mike.showName();
}, 5000);
Run Code Online (Sandbox Code Playgroud)
另请阅读:http://www.quirksmode.org/js/this.html
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |