下面这段代码中:
var obj = {
name:"Hello",
fn: function () {
return{
name:this.name,
show: function () {
console.log(this.name);
}
}
}
};
第二个this很好理解,指向fn返回的对象,但是第一个this应该如何理解呢?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第二个写成这样或许好理解一些。
return后面是个对象字面量或者也可以叫对象初始化器,它里面的this就是return所在的函数的this。具体是什么要看这个函数怎么被调用。
抓住一点: this的值是obj.fn这个函数求值时才绑定的
如果求值时的表达式是obj.fn(), this的值就会是obj
如果obj.fn.apply(其他), this就会是"其他"
this是动态作用域,视调用位置而定
==》
代码写成这样就好理解了不~