gpt4 book ai didi

javascript - 在 JavaScript 中,第一个 bind 确定 "this"是谁? (绑定(bind)两次或第二次都没关系)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:21 24 4
gpt4 key购买 nike

<分区>

如果 bind(obj) 可以返回一个将 this 绑定(bind)到 obj 的函数,那么就不会了

fn.bind(obj1).bind(obj2)

返回一个将 this 绑定(bind)到 obj2 的函数?

貌似只有第一次bind会绑定(bind)它,不管第二次bind,还是我们bind两次以上?这是规范的一部分吗?

示例:http://jsfiddle.net/hah0L3nj/

var obj1 = { name: "Mike" },
obj2 = { name: "Mary" };

console.log(obj1, obj2);

function printName() {
console.log(this.name);
}

printName.bind(obj1)();
printName.bind(obj2)();

printName.bind(obj1).bind(obj2)();

最后一行将打印“Mike”。

我认为原因是bind是这样实现的:

Function.prototype.myBind = function (obj) {
var self = this;
return function () {
self.call(obj);
}
};

参见 http://jsfiddle.net/hah0L3nj/1/

所以所做的是紧密绑定(bind),任何外部绑定(bind)(额外包装)都无关紧要。但我想知道 bind 的其他实现是否可以做其他事情,以及规范怎么说。

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