小编典典

嵌套函数中的Javascript“ this”指针

javascript

我有一个关于在嵌套函数方案中如何处理“ this”指针的问题。

假设我将以下示例代码插入到网页中。当我调用嵌套函数“ doSomeEffects()”时出现错误。我检查了Firebug,它表明当我使用该嵌套函数时,“
this”指针实际上指向全局“
window”对象,这是我所没有想到的。我一定不能正确理解某些东西,因为我认为自从我在对象的函数中声明了嵌套函数以来,它就应该具有相对于该函数的“局部”作用域(即“
this”指针将像引用对象本身一样)在我的第一个“ if”语句中情况如何)。

任何指针(无双关语)将不胜感激。

var std_obj = {
  options : { rows: 0, cols: 0 },
  activeEffect : "none",
  displayMe : function() {

    // the 'this' pointer is referring to the std_obj
    if (this.activeEffect=="fade") { }

    var doSomeEffects = function() {

      // the 'this' pointer is referring to the window obj, why?
      if (this.activeEffect=="fade") { }

    }

    doSomeEffects();   
  }
};

std_obj.displayMe();

阅读 599

收藏
2020-05-01

共1个答案

小编典典

在JavaScript中,this对象实际上是基于如何进行函数调用的。

通常,有三种方法可以设置this对象:

  1. someThing.someFunction(arg1, arg2, argN)
  2. someFunction.call(someThing, arg1, arg2, argN)
  3. someFunction.apply(someThing, [arg1, arg2, argN])

在上述所有示例中,this对象均为someThing。在没有前置父对象的情况下调用函数通常会为您提供 全局
对象,这在大多数浏览器中都意味着该window对象。

2020-05-01