我有一个使用 new
创建的自定义 Javascript 对象,并根据创建参数为其分配属性:
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(obj 中的“prop”){}
具体来说,我只感兴趣测试该属性是否是为此对象显式定义的,而不是在原型(prototype)链中。此外,该值永远不会设置为 null
或 undefined
,但它可能是类似空对象或数组的东西。但是,如果您想包括正确的方法(如果可能是这种情况),请随意。
最佳答案
hasOwnProperty
正是您正在寻找的内容,因为您指定了“如果该属性是为此对象显式定义的,而不是在原型(prototype)链中”。每https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty ,“此方法可用于确定对象是否具有指定属性作为该对象的直接属性;与 in 运算符不同,此方法不会检查对象的原型(prototype)链。” -- 似乎完全符合您的要求!
关于javascript - 测试 JavaScript 对象属性是否存在的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896308/