var ninja1 = {
whoAmI:function(){return this;}
}
var ninja2 = {
whoAmI:ninja1.whoAmI
}
console.log(ninja2.whoAmI() === ninja2);
结果返回true
function Ninja(){
this.whoAmI=()=>this;
}
var ninja1 = new Ninja();
var ninja2 = {
whoAmI:ninja1.whoAmI
}
console.log(ninja2.whoAmI() === ninja2);
结果返回false
为什么代码2中ninja2.whoAmI() === ninja1 ?用到了构造函数,ninja2.whoAmI上下文this就不等于ninja2了?
在箭头函数中,this的引用值是定义箭头函数的上下文,所以Ninja构造函数中的函数返回的this是固定的。
这个this等于Ninja的this,也就是
this.whoAmI
这个里面的this。构造函数实例化之后这个this的引用值就是这个实例,也就是ninja1。
所以最后的是false呀