var name = "LW";
var nameObj ={
name : "Sara",
showName : function(){
alert(this.name);
},
waitShowName : function(){
setTimeout(this.showName, 1000);
}
};
nameObj.waitShowName();//结果:LW
这段代码的结果并不是预测中的Sara这是因为javascript中setTimeout、setInterval和匿名函数执行时对象是全局对象window所以在运行this.showName的时候,this指向了window,所以最后显示了window.name。
var name = "LW";
var nameObj ={
name : "Sara",
showName : function(){
alert(this.name);
},
waitShowName : function(){
var that=this;
setTimeout(that.showName(),1000);}};
nameObj.waitShowName(); //结果:Sara
不过我们可以通过var that =this把setTimeout的作用域定义在nameObj中。所以结果为Sara。
网友评论