为什么JavaScriptBIND()是必要的?

为什么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 1

var storeMyName2 = myName.getName.bind(myName); // example 2

var storeMyName3 = myName.getName(); // example 3


console.log("example 1: " + storeMyName()); // doesn't work

console.log("example 2: " + storeMyName2()); // works

console.log("example 3: " + storeMyName3); // works


扬帆大鱼
浏览 359回答 3
3回答

白板的微信

这个bind()方法创建一个新函数,当调用该函数时,它的this关键字设置为提供的值,在调用新函数时,在任何提供的参数之前都有给定的参数序列。所以,当你执行var storeMyName = myName.getName;第一次,它把全球name(这个名字=“约翰”)当你使用bind()函数,它开始引用当前闭包中定义的名称(本例中为myName),从而打印Tom第三次,因为函数是立即调用的,所以它的作用域在自己的本地对象中,因此在闭包中打印值。Tom
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript