代码之家  ›  专栏  ›  技术社区  ›  9re

在闭包内的“this”关键字上

  •  3
  • 9re  · 技术社区  · 14 年前

    我知道“这个”在封口的外面和里面是不同的。
    但为什么是小孩子这个。numChildren封口内部有什么不同?

    var _this:Sprite = this;
    trace("[outside]this: " + this);
    trace("[outside]numChildren: " + numChildren);
    trace("[outside]this.numChildren: " + this.numChildren); 
    
    (function ():void {
        trace("[inside]this: " + this);
        trace("[inside]numChildren: " + numChildren);
        trace("[inside]this.numChildren: " + this.numChildren);
        trace(_this.removeChildAt === removeChildAt);
        trace(this.removeChildAt === removeChildAt);
    })();
    

    您可以从下面的链接中看到代码和输出
    How Do You Explain 'this'?

    1 回复  |  直到 14 年前
        1
  •  4
  •   PatrickS    14 年前

    不能从闭包中访问关键字为“this”的类。这就是为什么你会得到跟踪结果。 在您的示例中,访问类的唯一方法是使用\u this变量。在闭包中“this”指的是全局对象,您在类的范围之外。

    当你写作的时候这个名字或者这个。numChildren,在闭包内部,您不再引用类,因此跟踪输出不同