Js函数深入理解-闭包中的this
闭包中的this
var name = 'lisi';
var obj = {
name:'zhsan',
a:function(){
return function(){
return this.name;
}
}
}
console.log(obj.a()())
这里会打印什么呢?估计很有很多人说是'zhsan'
之前在“Js函数深入理解-内部属性与递归”这篇文章中提到过关于this的解释。其中有句"谁在调用,这个this就指向谁"。
上面的代码可以写成这样
b = obj.a();
console.log(b());
由此可以知道 b是由window这个全局对象调用,因此this指向window,所以值为"lisi"
如果要访问obj对象里面的name呢,我们可以这样
var name = 'lisi';
var obj = {
name:'zhsan',
a:function(){
var obj_this = this; //这里的this指向的是obj
return function(){
return obj_this.name;
}
}
}
console.log(obj.a()()) //zhsan