2017-01-21 36 views
1

我剛纔看到一個例子,其中的代碼如下:什麼時候你會在數組上使用hasOwnProperty?

var schemaSet:Array = currentScope(); 
if (schemaSet.hasOwnProperty("current")) 
    schema = schemaSet["current"]; 

我從來沒有見過這個。我檢查了as3文檔,但沒有找到任何信息。注意:此代碼來自Adobe員工編寫的SchemaManager.currentSchema()。

何時何地使用此?這是優於或相當於:

if (schemaSet.indexOf("current")!=-1) 

回答

3

有兩種類型的數據:

  • 普通陣列,其僅包含值和鍵是數字,從0

  • 開始

    還有對象,其中每個元素都有一個字符串(它也可以是一個數字)。

如果你想檢查一個數組是否包含一個值,你將使用.indexOf()方法。

var myArray = ["a", "b", "c"]; 

if (myArray.indexOf("a") > -1) return true; 

如果你想檢查一個對象是否有一個帶有某個鍵的元素,那麼你會去找hasOwnProperty()方法。

var myObject = {a: "letter a", b: "letter b"} 

if (myObject.hasOwnProperty("a")) return true; 
+0

謝謝。這就是我的想法,但我忘了提及代碼示例來自Adobe員工編寫的Adobe Flex SDK。因此,如果數組包含字符串,那麼'hasOwnProperty()'與'indexOf()> - 1'相同? –

+1

不是。 indexOf()只會查看值,而hasOwnProperty()只會查找關鍵字。所以取決於你想要檢查的內容,你會選擇合適的方法。 – Ibrahim

相關問題