Как стать автором
Обновить

Проверка существования свойств и методов объекта в Javascript

Время на прочтение1 мин
Количество просмотров66K
Нашел в коде Javascript библиотеки вот такую вот конструкцию:

if ('is_public' in profile) {
...
}


Очень заинтересовало, как это работает. До этого использовал оператор 'in' только для итерации, а тут вот такая вот проверка интересная. Покопавшись я обнаружил для себя, что оператор 'in' также можно использоваться для проверки существования метода объекта, свойства объекта и индекса элемента в массиве. Ниже несколько примеров:

var Test = function() { return this; };

Test.prototype.myFunc = function() {};

var testInstance = new Test();

console.info('myFunc' in testInstance); // will return 'true'
console.info('myFunc2' in testInstance); // will return 'false'

var myObject = {test: 1};

console.info('test' in myObject); // will return 'true'
console.info('test1' in myObject); // will return 'false'

var myArray = [4,3,1];

console.info(1 in myArray); // will return 'true'
console.info(3 in myArray); // will return 'false'


Чем лучше такая вот проверка чем просто проверять так?

var myArray = [4,3,1];

if (myArray[3] != undefined) {
...
}


Ответ прост, потому как ваш массив может содержать элемент под этим индексом, но значение этого элемента будет 'undefined', в таком случае вы не сможете быть уверенны в его существовании. Оператор 'in' проверяет именно существование элемента/свойства/метода. Возможно вы будете его не часто использовать или вовсе не будет использовать, но думаю, что знать это будет очень даже неплохо.
Теги:
Хабы:
+34
Комментарии99

Публикации

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн