ActionScript中的is型別和as型別

2021-09-01 08:15:12 字數 1859 閱讀 4065

is 運算子

is 運算子是 actionscript 3.0 中的新增運算子,它可用來測試變數或表示式是否為給定資料型別的成員。在早期的 actionscript 版本中,此功能由 instanceof 運算子提供。但在actionscript 3.0 中,不應使用 instanceof 運算子來測試變數或表示式是否為資料型別的成員。對於手動型別檢查,應用 is 運算子來代替 instanceof 運算子,因為表示式 x

instanceof y 只是在 x 的原型鏈中檢查 y 是否存在(在 actionscript 3.0 中,原型鏈不能全面地描述繼承層次結構)。

is 運算子檢查正確的繼承層次結構,不但可以用來檢查物件是否為特定類的例項,而且還可以檢查物件是否是用來實現特定介面的類的例項。下面的示例建立 sprite 類的乙個名為mysprite 的例項,並使用 is 運算子來測試 mysprite 是否為 sprite 和 displayobject 類的例項,以及它是否實現 ieventdispatcher 介面:

var mysprite:sprite = new sprite();

trace(mysprite is sprite); // true

trace(mysprite is displayobject); // true

trace(mysprite is ieventdispatcher); // true

is 運算子檢查繼承層次結構,並正確地報告 mysprite 與 sprite 和 displayobject 類相容(sprite 類是 displayobject 類的子類) 。is 運算子還檢查 mysprite 是否是從實現ieventdispatcher 介面的任意類繼承的。由於 sprite 類是從實現 ieventdispatcher 介面的 eventdispatcher 類繼承的,因此 is 運算子會正確地報告 mysprite 也實現該介面。

下面的示例說明與上乙個示例相同的測試,但使用的是 instanceof 運算子,而不是 is 運算子。instanceof 運算子正確地識別出 mysprite 是 sprite 或 displayobject 的例項,但是,當它用來測試 mysprite 是否實現 ieventdispatcher 介面時,返回的卻是 false。

trace(mysprite instanceof sprite); // true

trace(mysprite instanceof displayobject); // true

trace(mysprite instanceof ieventdispatcher); // false

as 運算子

as 運算子是 actionscript 3.0 中的新增運算子,也可用來檢查表示式是否為給定資料型別的成員。但是,與 is 運算子不同的是,as 運算子不返回布林值,而是返回表示式的值(代替 true)或 null (代替 false)。下面的示例說明了在簡單情況下使用 as 運算子替代 is運算子的結果,例如,檢查 sprite 例項是否為 displayobject、ieventdispatcher 和number 資料型別的成員。

var mysprite:sprite = new sprite();

trace(mysprite as sprite); // [sprite 物件]

trace(mysprite as displayobject); // [sprite 物件]

trace(mysprite as ieventdispatcher); // [sprite 物件]

trace(mysprite as number); // null

在使用 as 運算子時,右側的運算元必須是資料型別。如果嘗試使用表示式(而非資料型別)作為右側的運算元,將會產生錯誤。

ActionScript3 0中的正規表示式(1)

1.正規表示式的文字是用正斜槓 界定的。2.使用場合 正規表示式物件作為string類方法的引數 match replace search 和split regexp類的方法 test 和exec 3.建立乙個regexp 正規表示式 變數,例如 var pattern regexp abc 建立測...

ActionScript中的正規表示式

正規表示式描述字元模式,通常用於驗證文字值是否符合特定模式 例如驗證 號碼位數是否正確 或者替換與特定模式匹配的部分文字值。var pattern1 regexp bob i var pattern2 regexp new regexp bob i 1 2 var pattern3 regexp 1...

ActionScript 3 中的強制型別轉換

以前as中是這樣進行強制型別轉換的 假設有乙個類叫做class1,我們宣告了乙個它的物件 c1,如果想要將它轉換成class2型別,只要這樣寫 class2 c1 c1 as class2 使用 as 操作符有幾個好處 1.它的效果和第一種方法是一樣的。2.如果型別不相容無法轉換,就會返回null,...