为了账号安全,请及时绑定邮箱和手机立即绑定

为什么JavaScriptBIND()是必要的?

为什么JavaScriptBIND()是必要的?

扬帆大鱼 2019-08-02 02:02:45
为什么JavaScriptBIND()是必要的?示例1中的问题是“此”引用全局名称,而不是myName对象。我理解如何使用BIND()将它的值设置为特定的对象,因此它解决了示例1中的问题,但是为什么首先会出现这个问题呢?这仅仅是Javascript创建的方式吗?我还想知道为什么示例3解决了这个问题,以及示例2和示例3之间的区别。this.name = "John"var myName = {  name: "Tom",  getName: function() {    return this.name  }}var storeMyName = myName.getName; // example 1var storeMyName2 = myName.getName.bind(myName); // example 2var storeMyName3 = myName.getName(); // example 3console.log("example 1: " + storeMyName()); // doesn't workconsole.log("example 2: " + storeMyName2()); // worksconsole.log("example 3: " + storeMyName3); // works
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

这个bind()方法创建一个新函数,当调用该函数时,它的this关键字设置为提供的值,在调用新函数时,在任何提供的参数之前都有给定的参数序列。

所以,当你执行var storeMyName = myName.getName;第一次,它把全球name(这个名字=“约翰”)

当你使用bind()函数,它开始引用当前闭包中定义的名称(本例中为myName),从而打印Tom

第三次,因为函数是立即调用的,所以它的作用域在自己的本地对象中,因此在闭包中打印值。Tom





查看完整回答
反对 回复 2019-08-03
  • 3 回答
  • 0 关注
  • 358 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号