我从本教程中提取了以下代码: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/

10-12 00:31
查看更多