Определенно if ('property' in object)
- верный путь. Это фактически проверяет, находится ли свойство в объекте (или в его цепочке прототипов, подробнее об этом ниже).
if (object.property)
, с другой стороны, преобразует «свойство» в истинное / ложное значение. Если свойство не установлено, оно вернет «неопределенное», которое будет приведено к значению false и будет работать. Но это также не удастся для ряда других установленных значений свойств. Общеизвестно, что javascript непоследователен в том, что он считает правдивым и ложным.
Наконец, как я уже сказал выше, 'property' in 'object'
вернет true, если оно находится где-нибудь в цепочке прототипов. Если вы хотите проверить это на самом объекте, а не где-то выше в цепочке, вы используете метод hasOwnProperty
следующим образом:
if (object.hasOwnProperty('property')) ...