我从本教程中提取了以下代码:tutorial
如果可以将其从父函数绑定到匿名内部函数,那么以后要在匿名内部函数中引用“ this”怎么办?匿名内部函数是否不存在“ this”?
render: function ()
{
this.getAsyncData(function () {
this.specialFunction();
this.anotherSpecialFunction();
}.bind(this));
}
最佳答案
如果以后想在匿名内部函数中引用“ this”怎么办?
如果没有调用this
,则无法引用回调将具有的.bind
值。
但是,您不必使用.bind
,还有其他方法可以使用“父”函数的this
值:How to access the correct `this` context inside a callback?
匿名内部函数是否不存在“ this”?this
是每个函数中的隐式值。除非函数明确地绑定到某个值(通过.bind
),否则它具有哪个值取决于函数的调用方式。
例如,如果您“正常”调用一个函数,例如func()
,则this
将引用全局对象(浏览器中的window
)。 API文档通常会说明this
在回调中具有哪个值。如果没有明确提及任何内容,则可以假定this
指向全局对象,这在大多数情况下不是很有用,因此通过.bind
“覆盖”它没有问题。
但是,即使在回调中将this
设置为特定值,该值通常也作为参数传递给回调。能够通过this
访问值只是为了方便。但同样,这取决于API的设计方式,通常会在API文档中进行说明。
有关this
的更多信息,请查看MDN documentation。
关于javascript - 对JavaScript中的bind()感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23599897/