(我知道 this 问题,但答案并不能完全告诉我我需要知道什么。)
我遇到过需要使用 .bind()
的情况在 JavaScript 中的函数上,以便将 this
或局部/类变量传递给函数。但是,我仍然不知道什么时候需要它。
知道 this
或局部/类变量何时在函数中可用或不可用的标准是什么?你是怎么推理的?
例如:
- 何时创建、包装或传递新的匿名
function() { }
? - 当使用
class
成员函数、class
getter/setter 函数或旧式prototype.function
“成员函数”(的作为一个类的函数)? - 在全局范围内?
- 在
for
或forEach
循环或它们的任何变体中? - 在闭包外部或内部函数中?
- 在各种 JS 操作中,例如
Array.prototype.forEach.call()
或[].forEach.call()
? - 在各种JS库和脚本中,有哪些可能有自己自定义实现的东西?
我问的主要原因是要注意潜在的陷阱,避免依赖反复试验。
最佳答案
Mozilla 开发者网络有一些关于 this 的优秀文档指定不同的情况:
- > Global context
- > Function context
- > using
bind
- > with arrow functions
- > in object methods
- > in an object constructor
- > in DOM event handlers
查看链接以了解 this
在不同上下文中的工作方式,以及何时应使用 bind
强制绑定(bind)不同的 this
函数上下文。
通常,bind
用于转移函数的“所有权”。具体来说,根据我的经验,在创建类之前使用它来强制将对象方法绑定(bind)到相关对象。它在使用箭头函数时也很有用,因为箭头函数有不同的上下文。
关于javascript - 我怎么知道什么时候在 JS 函数上使用 .bind()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57714243/