这两天事好多啊。。。好几天没更新博客了。
关于this对象,有一点一定要记住:this对象是在运行时基于函数的执行环境绑定。
明白这个就好说了。。
看如下代码
1
2
3
4
5
6
7
8
9
10
|
varname='this is windows';
varobj={
name:'this is obj',
getname:function(){
returnfunction(){
returnthis.name;
}
}
}
alert(obj.getname()())
|
弹出 this is windows;
obj.getname()执行返回的是一个 函数,两个括号就是要执行返回的函数。因为该函数是在windows作用域中执行的,
所以 这个this对象 指向的是windows作用域 而非 obj的作用域
再看
1
2
3
4
5
6
7
|
varname='this is windows';
varobj={
name:'this is obj',
getname:(function(){
alert(this.name)
})()
}
|
同样 该代码 弹出 this is windows;
因为 getname函数会在页面加载的时候就执行,
而执行环境是在windows下执行的,所以this 指向的就是windows作用域。
千万不要理解为 写在obj体里就认为this对象肯定指向obj体。。这是错误的。。
this对象是在运行时基于函数的执行环境绑定。