2011-05-25 108 views
1

我一直髮現這個有趣的,並沒有設法完全理解它。藉此類:未定義的屬性_myvar的訪問:AS3:靜態範圍問題

package 
{ 
    public class SomeClass 
    { 
     private var _myvar:String = "hello"; 

     public static function sayHello():void 
     { 
      trace(_myvar); 
     } 
    } 
} 

正如我們所知道的,除非我宣佈_myvarprivate static var _myvar

1120這將拋出一個錯誤。

我不完全明白爲什麼_myvar不在範圍內,除非它是static。任何人都可以提供一個容易理解的解釋嗎?

回答

3

由於_myvar不是靜態的,它屬於SomeClass的實例,即每次創建新的SomeClass時它只有含義。

與之相反,static屬性附加到Class對象,它只存在一次,並且不依賴於創建的SomeClass的每個實例。

所以,當你嘗試從達到_myvar它與調用this._myvar但你只有一個靜態財產,可以有多實例在你的應用程序的timelife創建,應該是什麼的價值this在這種情況下?

+0

這樣做更有意義 - 因爲沒有創建SomeClass的實例,_myvar不存在/尚未創建。這聽起來是對的嗎? – Marty 2011-05-25 07:55:26

+0

@Marty華萊士,是的就是這樣 – Patrick 2011-05-25 08:26:26