Pull to refresh

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

Reading time1 min
Views67K
Нашел в коде 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' проверяет именно существование элемента/свойства/метода. Возможно вы будете его не часто использовать или вовсе не будет использовать, но думаю, что знать это будет очень даже неплохо.
Tags:
Hubs:
Total votes 62: ↑48 and ↓14+34
Comments99

Articles