【问题标题】:Javascript - list all properties [duplicate]Javascript - 列出所有属性[重复]
【发布时间】:2016-04-01 05:54:15
【问题描述】:

如何列出对象及其原型链中的所有属性(方法和属性)? 我对所有这些都感兴趣(可枚举的和不可枚举的)。

目标浏览器 - chrome。

【问题讨论】:

    标签: javascript list properties prototype chain


    【解决方案1】:

    这个:

    for(var k in obj) {
        console.log(k, obj[k]) // name, value
    }
    

    示例:

    var obj1 = { a: 10, b: "x", c: { no: "no" }}
    var obj2 = new Object(obj1)
    obj2.d = "yes"
    
    for (var k in obj2) {
      console.log(k, obj2[k]) // name, value
    }

    【讨论】:

      【解决方案2】:

      我对所有这些都感兴趣(可枚举的和不可枚举的)。

      您无法枚举不可枚举的内容。实际上,您可以定义不可枚举的属性来避免它们作为迭代器的一部分出现,例如 for...inObject.keys。请参阅此其他问答以了解有关解决方法的更多信息:Is it possible to get the non-enumerable inherited property names of an object?

      目前,迭代所有属性(包括自己的属性原型的属性)的最简单方法是使用for...in 循环:

      for(var propertyName in obj) {
      
      }
      

      您可以使用Object.hasOwnProperty 检查给定对象原型上是否未声明属性:

      for(var propertyName in obj) {
         if(obj.hasOwnProperty(propertyName)) {
             // It's not from the object's prototype...
         }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-08-17
        • 2021-01-09
        • 1970-01-01
        • 1970-01-01
        • 2015-07-21
        • 2013-04-05
        • 1970-01-01
        • 2013-07-11
        • 2019-12-14
        相关资源
        最近更新 更多