gpt4 book ai didi

javascript - 绑定(bind)功能如何以及何时起作用?

转载 作者:行者123 更新时间:2023-12-03 09:36:55 24 4
gpt4 key购买 nike

我正在尝试这里的代码 http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/对于bind方法

var data = [
{name:"Samantha", age:12},
{name:"Alexis", age:14}
]

var user = {
// local data variable​
data :[
{name:"T. Woods", age:37},
{name:"P. Mickelson", age:43}
],
showData:function (event) {
var randomNum = ((Math.random () * 2 | 0) + 1) - 1; // random number between 0 and 1​

console.log (this.data[randomNum].name + " " + this.data[randomNum].age);
}

}

// Assign the showData method of the user object to a variable​
var showDataVar = user.showData.bind(user);

showDataVar (); // // P. Mickelson 43​ (from the local data array)

据我了解,bind方法可以用来改变什么this指的是函数内部。

但是,如果我更改此行 var showDataVar = user.showData.bind(user);两行

var showDataVar = user.showData;
showDataVar.bind(user);

恢复之前的行为(即代码打印 Samantha),就好像第二行没有任何效果一样。你能解释一下怎么做吗bind有效吗?

最佳答案

bind 不会修改函数,它返回一个新函数。因此,showDataVar.bind(user) 不会执行任何操作,除非您保留结果并使用它。

至于bind的工作原理,大致相当于这样:

Function.prototype.fakeBind = function(obj) {
var that = this;
return function() {
return that.apply(obj, arguments);
}
};

关于javascript - 绑定(bind)功能如何以及何时起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31307765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com