首页 > 解决方案 > 在 bind() 中如何处理“new”运算符?

问题描述

我正在学习JavaScript 中的.call(),.apply()​​ ,.bind()方法。说到bind()方法,我遇到了一行:

请注意,如果绑定函数是使用“new”运算符构造的,则忽略第一个参数的值。

我不明白。使用operator构造绑定函数new是什么意思?

标签: javascript

解决方案


所以让我们分解一下。首先,“new”关键字有什么作用?除其他外,它调用它前面的函数,但将“this”的值设置为新创建的空对象。这在使用构造函数创建对象的新实例时很有用。(我建议您阅读更多内容)

现在,另一方面,.bind 方法将创建调用它的函数的副本,但“this”的值设置为您传递给它的第一个参数。

因此,这只是意味着如果您使用 new 尝试调用与“this”关键字的值绑定的函数,“new”关键字将覆盖您的 .bind 并且“this”将设置为空对象.

正如我所说,“new”用于使用“构造”该实例的函数来创建新实例。所以使用“new”来构造绑定函数,就是使用绑定函数作为构造函数。


推荐阅读