我知道bind
会将方法绑定到传递的对象。但是,我在这里不理解的是,为什么我们将类名传递给绑定?
我从一位专家那里得到的一个答案是,“这是为了让这个功能'独立'”,我再也听不懂了。我可能完全愚蠢到不理解并对一个陈述完全生气,但是,有人可以解释一下吗?
答案 0 :(得分:4)
这不是“类名”,而是一个对象。 (具体来说,一个函数;函数是JavaScript中的对象。更具体地说,是一个构造函数函数。)
Promise.all(...)
在all
对象上查找Promise
属性,并在all
设置为this
的情况下调用Promise
。因此,仅使用all(...)
执行此操作时,我们需要绑定函数,以便this
始终为Promise
,即使我们以不同的方式调用它。这就是all = Promise.all.bind(Promise)
所做的。
如果我们刚刚all = Promise.all
,那么当我们调用all(...)
时,调用期间this
将不会引用Promise
(它将是松散模式下的全局对象或严格模式下的undefined
。 all
relies on this
引用了承诺的构造函数(例如Promise
)。
我知道
bind
会将方法绑定到传递的对象
让我们采用不同的方式:a = b.bind(c)
返回一个新函数(a
),在调用时,会调用b
确保this
设置为{{} 1}}在通话期间。结果称为绑定函数,因为它的c
值绑定到它。
另见: