Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 在';这';闭包内的关键字_Actionscript 3_This - Fatal编程技术网

Actionscript 3 在';这';闭包内的关键字

Actionscript 3 在';这';闭包内的关键字,actionscript-3,this,Actionscript 3,This,我知道“这”在闭包的外部和内部是不同的。 但是为什么numChildren和this.numChildren在闭包中不同呢? 或者为什么孩子们内外都一样 var _this:Sprite = this; trace("[outside]this: " + this); trace("[outside]numChildren: " + numChildren); trace("[outside]this.numChildren: " + this.numChildren); (function

我知道“这”在闭包的外部和内部是不同的。
但是为什么numChildren和this.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);
})();
您可以通过以下链接查看代码和输出

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

numChildren在外部和内部是相同的,因为它是类的一个属性,与在闭包外部和内部跟踪“name”属性的方式相同,您将得到完全相同的结果。换句话说,不能使用“this”访问类并不意味着不能访问其属性


当您在闭包中编写this.name或this.numChildren时,您不再引用该类,因此不同的跟踪输出

感谢您的详细解释!