今天无意中发现一个问题,以下是关于确定this关键字的相关代码
var someOne={
name:'bob',
showName:function(){
alert(this.name);
}
}
var other={
name:'tom',
showName:someOne.showName()//写到这步时 当没有()时 最后的显示结果是tom 也就是正确的this指向 当有()时 显示的是bob 求解这其中的原因
}
other.showName();
首先,你F12查看控制台的时候,带 () 一定是先输出
bob
,然后会报错。不带() 传递的是函数引用,带 ()先把函数执行一遍,然后在传递执行函数的值。
所以,带 () 输出
bob
并不是你下面showName
代码中输出的,而是在赋值的时候已经执行过上面的alert了