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

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

Время на прочтение1 мин
Количество просмотров67K
Нашел в коде 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' проверяет именно существование элемента/свойства/метода. Возможно вы будете его не часто использовать или вовсе не будет использовать, но думаю, что знать это будет очень даже неплохо.
Теги:
Хабы:
Всего голосов 62: ↑48 и ↓14+34
Комментарии99

Публикации

Истории

Работа

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

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн