2017-01-21 13 views
1

я только что видели пример, где код выглядит следующим образом:Когда вы используете hasOwnProperty в массиве?

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

Я никогда не видел этого раньше. Я проверил документы as3 и не нашел на нем никакой информации. Примечание. Этот код находится в SchemaManager.currentSchema(), написанном сотрудником Adobe.

Когда и где вы будете использовать это? Является ли это лучше, чем или эквивалент:

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 Flex SDK, написанный сотрудником Adobe. Итак, если массив содержит строки, то 'hasOwnProperty()' такой же, как 'indexOf()> - 1'? –

+1

Не совсем. indexOf() будет выглядеть только в значениях, а hasOwnProperty() будет выглядеть только в ключах. Поэтому в зависимости от того, что вы хотите проверить, выберете подходящий метод. – Ibrahim

 Смежные вопросы

  • Нет связанных вопросов^_^