gpt4 book ai didi

actionscript-3 - 在闭包内的 'this' 关键字上

转载 作者:行者123 更新时间:2023-12-01 13:05:18 26 4
gpt4 key购买 nike

我知道“this”在闭包的外部和内部是不同的。
但是为什么 numChildren 和 this.numChildren 在闭包内部不同?
或者为什么 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'?

最佳答案

您不能在闭包中使用关键字“this”访问该类。这就是您获得该跟踪结果的原因。在您的示例中,访问该类的唯一方法是使用 _this 变量。在闭包内,“this”指的是全局对象,您在类的范围之外。

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

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

关于actionscript-3 - 在闭包内的 'this' 关键字上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3518383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com