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

Оператор in позволяет проверить существование свойства (включая унаследованные в цепочке прототипов) у объекта. Если свойство существует, то возвращается значение true:

let objA = { a: 10 };
let objB = { b: 55 };
objB.__proto__ = objA;
console.log('a' in objA);         // true
console.log('b' in objA);         // false
console.log('a' in objB);         // true
console.log('b' in objB);         // true
console.log('toString' in objB);  // true
let x = new Number(5);
console.log('toFixed' in x);      // true

Проверить наличие собственного (не унаследованного в цепочке прототипов) свойства позволяет метод hasOwnProperty(<Название свойства>):

let objA = { a: 10 };
let objB = { b: 55 };
objB.__proto__ = objA;
console.log('a' in objB);                // true
console.log( objB.hasOwnProperty('a') ); // false
console.log( objB.hasOwnProperty('b') ); // true

Если название метода указать в условии без круглых скобок, то это позволит проверить наличие метода:

let x = new Number(5);
if (x.toFixed) console.log('Метод определен');
else           console.log('Нет');

Обратите внимание на то, что проверять таким образом наличие свойства нельзя, т. к. значение 0 будет интерпретировано как false.

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов