'this'参考在回调函数中丢失

时间:2018-11-06 14:01:58

标签: javascript

this引用在回调函数中变为未定义(请参见下面的代码)。

我可以使用 fat arrow函数和回调函数上的.bind(this)达到预期的效果,我知道原因。 它取决于回调的高阶函数的调用位置。

我已阅读以下链接中的内容丰富的文章,这些文章讨论高阶函数的调用站点。 YDNJSMastering this in callbacks

我不明白的是,此引用丢失并在我的代码回调中变得不确定的原因。据我所知,在回调之前,呼叫站点有权引用this。是否因为该语言的内部实现细节?如果是,那是什么?

'use strict';

var ArrayRotation = {
  init : function(arr) {
    this.arr = arr;
  },

  promptUpdater : function() {
    //code
  },

  userInputOn : function() {
    //*this* reference correct upto this point.
    return new Promise(function(resolve, reject) {
      this.promptUpdater(); //*this* reference getting lost here. Becomes undefined.
    });
  },
}

let rotationTaskObj = Object.create(ArrayRotation);

rotationTaskObj.init([]);

rotationTaskObj.userInputOn();

0 个答案:

没有答案