不管是直接引用function,还是实例化一个function,其返回的闭包函数里的this都是指向window
此时的that代表的是实例化的对象!
详细出处参考:http://www.jb51.net/article/26982.htm
<script
type="text/javascript">
//在function中使用this之四
function a() {
alert(this == window);
var that = this;
var func = function() {
alert(this == window);
alert(that);
};
return func;
}
var b = a();
b();
var c = new a();
c();
</script>
另一个例子:
其实可以这样总结:在this所在的函数上下文中,如果这个函数不是以“方法”的形式被调用的话,那么这个this会指向window对象,否则会指向这个函数的拥有者。
var name = ‘hong‘
var obj = {
name: ‘ru‘,
getName:
function(){
return function(){
return this.name;
};
}
}
alert(obj.getName()());
结果为 ‘hone‘;
var name = ‘hong‘
var obj = {
name: ‘ru‘,
getName:
function(){
var that = this;
return function(){
return that.name;
};
}
}
alert(obj.getName()());
结果为:ru