在JavaScript中,第一个绑定决定谁;这";是(绑定两次或第二次并不重要)
如果在JavaScript中,第一个绑定决定谁;这";是(绑定两次或第二次并不重要),javascript,bind,Javascript,Bind,如果bind(obj)可以返回一个函数,其中this绑定到obj,则不会返回 fn.bind(obj1).bind(obj2) 返回与obj2绑定的this函数 看起来只有第一个绑定会绑定它,而不管第二个绑定是什么,或者如果我们绑定它两次还是更多?这是规格的一部分吗 例如: 最后一行将打印“Mike” 我认为原因是bind是这样实现的: Function.prototype.myBind = function (obj) { var self = this; return fu
bind(obj)
可以返回一个函数,其中this
绑定到obj
,则不会返回
fn.bind(obj1).bind(obj2)
返回与obj2
绑定的this
函数
看起来只有第一个绑定会绑定它,而不管第二个绑定是什么,或者如果我们绑定它两次还是更多?这是规格的一部分吗
例如:
最后一行将打印“Mike”
我认为原因是bind
是这样实现的:
Function.prototype.myBind = function (obj) {
var self = this;
return function () {
self.call(obj);
}
};
看
因此,所做的是一个紧密的约束,任何外部约束(额外包装)都不会真正起作用。但是我想知道
bind
的其他实现是否可以做其他的事情,以及规范是怎么说的。据我所知,function.bind()不会修改函数本身。相反,它创建了一个新函数,一个包装器,当被调用时,它确保绑定的函数总是获得相同的上下文。除非将bind()的结果存储在变量中,否则它将无效。printName
不会在第二个处调用。bind()
这是因为在bind
的链中没有绑定printName
,而是绑定了bind()
函数。@Ryeball你是什么意思,那么,如果我分两步绑定它会怎么样:执行var printName2=printName.bind(obj1)代码>var printName3=printName2.bind(obj2)代码>printName3()
@torazaburo应该发布解决此特定问题的方法-引用此问题-这不会创建不同的.bind()
功能,在?可能不止一种方法返回预期值results@guest271314我的意思是,bind
是bind
。从本质上讲,绑定一个已经绑定的函数不会做任何事情。这是JavaScript,因此您可以发明任何数量的机器来执行其他/不同的绑定,例如,但它们不是绑定,即使您称之为绑定。
Function.prototype.myBind = function (obj) {
var self = this;
return function () {
self.call(obj);
}
};