У меня есть пользовательский объект 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
, но оно может быть чем-то вроде пустого объекта или массива. Однако, если вы хотите включить то, что правильно, если это может быть так, не стесняйтесь.