1

我有一个对象
me = { name: "Mo", age: 28, } ,例如,我想看看这个对象是否具有“高度”属性。(它没有)我该怎么做?因此,例如,如果它具有“高度”属性,我可以给它一个值“5,7”。

请注意:我不想检查属性 VALUE(me.name),而是检查属性 NAME。

谢谢你。

4

4 回答 4

6

您可以使用in运算符:

if ("height" in me) {
  // object has a property named "height"
}
else {
  // no property named "height"
}

请注意,如果对象没有名为“height”的属性,您仍然可以添加这样的属性:

me.height = 100;

无论对象之前是否具有“高度”属性,这都有效。

还有.hasOwnProperty从 Object 原型继承的方法:

if (me.hasOwnProperty("height"))

与 test 之间的区别在于in.hasOwnProperty()仅当属性存在并且作为对象上的直接属性存在且不通过其原型链继承时才返回 true。

于 2016-07-14T10:34:02.233 回答
1

您可以使用.hasOwnProperty

me.hasOwnProperty('height'); //false
于 2016-07-14T10:36:01.327 回答
1

直接回答:

if (Object.keys(me).indexOf("name") >= 0) {
    //do the stuff
}

但是,您应该做的是创建一个合同对象/类/模块,期望我拥有该height属性。如果没有,你应该抛出一个异常。编程中最糟糕的事情是一半的期望。它不仅打破了 SOLID 规则,还导致了这样的场景,唯一的解决方案是重复 if/switch 语句,以确保处理所有可能性......

于 2016-07-14T10:36:19.737 回答
1

您可以使用

if (me.hasOwnProperty('height'))
{
 }
else
{
 }
于 2016-07-14T10:38:42.587 回答