javascript - 在 bind() 中如何处理“new”运算符?
问题描述
我正在学习JavaScript 中的.call()
,.apply()
,.bind()
方法。说到bind()
方法,我遇到了一行:
请注意,如果绑定函数是使用“new”运算符构造的,则忽略第一个参数的值。
我不明白。使用operator构造绑定函数new
是什么意思?
解决方案
所以让我们分解一下。首先,“new”关键字有什么作用?除其他外,它调用它前面的函数,但将“this”的值设置为新创建的空对象。这在使用构造函数创建对象的新实例时很有用。(我建议您阅读更多内容)
现在,另一方面,.bind 方法将创建调用它的函数的副本,但“this”的值设置为您传递给它的第一个参数。
因此,这只是意味着如果您使用 new 尝试调用与“this”关键字的值绑定的函数,“new”关键字将覆盖您的 .bind 并且“this”将设置为空对象.
正如我所说,“new”用于使用“构造”该实例的函数来创建新实例。所以使用“new”来构造绑定函数,就是使用绑定函数作为构造函数。
推荐阅读
- php - 为什么 Lumen 环境变量过时(或不匹配?)
- httprequest - 尝试获得 Microsoft Graph API 访问的管理员同意
- grep - Linux grep 与 & 符号
- microsoft-graph-api - 在 Teams 中检索消息的历史记录
- python - 已解决:Python 多处理 imap BrokenPipeError: [Errno 32] Broken pipe pdftoppm
- amazon-web-services - AWS S3 SDK ListObjectsV2 startafter 和 ContinuationToken 有什么区别?
- xtk - 服务器上托管的 VTK 文件加载失败
- python - Nagle 没有被 TCP_NODELAY 禁用
- snowflake-cloud-data-platform - 下有 ACCOUNTADMIN 的角色能否成功查询 TABLE_STORAGE_METRICS?
- sonarqube - 适用于 python 的 SonarQube 忽略 __init__.py 文件