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。