2016-07-14 108 views
0

我有一个对象
me = { name: "Mo", age: 28, } 我想看看这个对象有例如属性“高度”。 (它没有)我怎么能做到这一点?例如,如果它具有“高度”属性,我可以给它一个“5,7”的值。如何访问JavaScript对象属性名称不值

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

谢谢。

回答

6

可以使用in操作:

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

注意,如果对象没有名为“高度”属性,你仍然可以添加这样一个属性:

me.height = 100; 

这一工程不管对象之前是否具有“高度”属性。

另外还有.hasOwnProperty方法从对象的原型继承:

if (me.hasOwnProperty("height")) 

那之间的区别与in测试是.hasOwnProperty()只返回true,如果属性存在存在作为直接属性,而不是通过其原型链继承。

+0

比你。有没有方法可以在不使用条件语句的情况下将控件的属性名打印出来?只是打印出属性名称>(并且不使用for循环)? – zzgooloo

1

直接回答:

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

,但你应该做的,是建立一个契约对象/类/模块,希望我有height财产。如果没有,你应该抛出异常。编程中最糟糕的事情是一半的预期。它不仅打破了SOLID戒律,但也导致这样的,其中唯一的解决办法是重复的,如果/ switch语句,以确保治疗的所有可能性的情况......

1

可以使用

if (me.hasOwnProperty('height')) 
{ 
} 
else 
{ 
}