【问题标题】:How to access javaScript object property NAME not VALUE如何访问 JavaScript 对象属性 NAME 而不是 VALUE
【发布时间】:2016-07-14 10:32:51
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: javascript object objectname object-notation


    【解决方案1】:

    您可以使用in 运算符:

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

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

    me.height = 100;
    

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

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

    if (me.hasOwnProperty("height"))
    

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

    【讨论】:

    • 比你。有没有办法在不使用条件语句的情况下将属性名称打印到控制台?只需打印出属性名称>(并且不使用 for in 循环)?
    【解决方案2】:

    您可以使用.hasOwnProperty

    me.hasOwnProperty('height'); //false
    

    【讨论】:

      【解决方案3】:

      你可以使用

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

      【讨论】:

        【解决方案4】:

        直接回答:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-09-25
          • 1970-01-01
          • 2023-03-31
          • 2015-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多