javascript : this学习笔记

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容