Как правильно проверить наличие свойства в объекте JavaScript?
У меня есть пользовательский объект Javascript, который я создаю сnew
и назначить свойства на основе аргументов создания:
function MyObject(argument) {
if (argument) {
this.prop = "foo";
}
}
var objWithProp = new MyObject(true); // objWithProp.prop exists
var objWithoutProp = new MyObject(false); // objWithoutProp.prop does not exist
Какой правильный способ проверить существованиеprop
свойство объектов? Я видел следующие способы, но я не уверен, что любой из этих способов является лучшим:
if (obj.prop) {}
if (obj.hasOwnProperty("prop")) {}
if ("prop" in obj) {}
В частности, меня интересует только тестирование, если свойство явно определено для этого объекта, а не в цепочке прототипов. Кроме того, значение никогда не будет установлено наnull
или жеundefined
, но это может быть что-то вроде пустого объекта или массива. Однако, если вы хотите указать, каков правильный путь, если это так, не стесняйтесь.