我有一个使用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 ("prop" in obj) {}
具体来说,我只对测试是否为该对象显式定义了属性感兴趣,而对原型(prototype)链没有兴趣。此外,该值永远不会设置为
null
或undefined
,但可能类似于空对象或数组。但是,如果您想包括在可能的情况下正确的方法,请放心。 最佳答案
hasOwnProperty
正是您要寻找的,因为您指定了“如果为该对象显式定义了属性,而不是在原型(prototype)链中”。 Per 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/