javascript - 测试 JavaScript 对象属性是否存在的正确方法是什么?

标签 javascript object properties

我有一个使用 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)链中。此外,该值永远不会设置为 nullundefined,但它可能是类似空对象或数组的东西。但是,如果您想包括正确的方法(如果可能是这种情况),请随意。

最佳答案

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/

相关文章:

javascript - 如何在 Outlook 插件集成中获取用户的实际电子邮件 ID

JavaScript/CasperJS 处理循环页面时的超时

javascript - jquery 从数组中删除最后 2 个零

javascript - 如何在自定义对象上指定 .constructor.name?

javascript - 如何获取数组的键或属性值

javascript - 在 Ramda 中有条件地 promise

java - 当对象放入 ArrayList 时对其进行排序

javascript - 在 JavaScript 中添加数组中的值

java - 如何访问位于项目文件夹外部和项目类路径外部的 .properties 文件?

datetime - powershell get-itemproperty获得公正的值(value)