有()和没有()的区别

今天无意中发现一个问题,以下是关于确定this关键字的相关代码

var someOne={

name:'bob',
showName:function(){
    alert(this.name);
    }
}

var other={

name:'tom',
showName:someOne.showName()//写到这步时 当没有()时 最后的显示结果是tom 也就是正确的this指向 当有()时  显示的是bob  求解这其中的原因

}

other.showName();

阅读 2.1k
2 个回答

首先,你F12查看控制台的时候,带 () 一定是先输出bob,然后会报错。

不带() 传递的是函数引用,带 ()先把函数执行一遍,然后在传递执行函数的值。

所以,带 () 输出 bob 并不是你下面 showName 代码中输出的,而是在赋值的时候已经执行过上面的alert了

没有括号,引用的是someOne的一个属性方法。有括号,则是引用someOne的一个属性方法的值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题