2010-08-19 4 views
3

Я знаю, что «это» отличается как снаружи, так и внутри крышки.
Но почему numChildren и this.numChildren отличается внутри закрытия?
Или почему numChildren одинаково снаружи и внутри?Ключевое слово 'this' внутри укупорочного средства

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'?

ответ

4

Вы не можете получить доступ к классу с ключевым словом «это» изнутри закрытия. Вот почему вы получаете результат этой трассировки. В вашем примере единственным способом доступа к классу является использование этой переменной. Внутри замыкания «this» относится к глобальному объекту, вы находитесь за пределами класса.

numChildren - это то же, что и снаружи и внутри, потому что это свойство класса, так же, как если бы вы прослеживали свойство «name» за пределами & внутри закрытия, вы получили бы точно такой же результат. другими словами, не имея возможности получить доступ к классу с помощью «этого», не означает, что вы не можете получить доступ к его свойствам.

Когда вы пишете this.name или this.numChildren, внутри затвора, вы не обращаясь к классу больше, следовательно, различные следовые выход

+0

Спасибо за объяснение детали! – 9re