【问题标题】:How to print all properties/values in an object at once. JS如何一次打印对象中的所有属性/值。 JS
【发布时间】:2015-11-03 15:54:52
【问题描述】:

假设我有这个:

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

var car1 = new Car("VW", "Bug", 2012);
var car2 = new Car("Toyota", "Prius", 2004);

document.write(car1.make, car1.model, car1.year);
document.write(car2.make, car2.mocel, car2.year);

有没有更简洁的方法来写出对象的所有属性/值?谢谢!

【问题讨论】:

  • 什么是“更清洁”?你现在的做法有什么不“干净”的地方?
  • 这是干什么用的?如果要调试代码,请使用浏览器的开发者工具和console.log
  • 您至少应该将其封装成类似 document.write(car1.toString()) 的内容并为您的对象实现 toString()。

标签: javascript oop object


【解决方案1】:

您可以使用JSON.stringify 序列化对象并轻松记录其属性:

console.log(JSON.stringify(car1))

【讨论】:

    【解决方案2】:

    在 JavaScript 中枚举对象的所有属性:

    for (aProperty in yourObject) {
        // do what needed
        // in case you want just to print it:
        console.log(aProperty + "has value: " + yourObject[aProperty]);
    }
    

    但是,如果您只是想将对象打印到控制台,也许this question 可以帮助您。

    【讨论】:

      【解决方案3】:

      MDN documentation will help

      你可以使用

      for(aVariable in yourObject){
         console.log(aVariable);
      }
      

      这样,你可以看到一个对象的每一个属性

      【讨论】:

      • 这是我的答案的副本。
      • 是的,这段代码很常见,我们发布的非常接近,但是,我添加了一个源,甚至编辑了更接近你写的内容....但是我们的两个答案适合问题
      【解决方案4】:

      从技术上讲,您可以使用简单的for 循环来遍历所有属性,但这意味着您也可以获得在其祖先中设置的所有属性,因此您可以使用Object.hasOwnProperty 来验证此属性为自己设置而不是继承,并打印出相关属性(或对它们做一些事情)。

      function Car(make, model, year) {
        this.make = make;
        this.model = model;
        this.year = year;
      }
      
      var bmw = new Car('VW','Cruiser',1989);
      var output = document.getElementById('output');
      
      for(property in bmw) 
        if(bmw.hasOwnProperty(property))  
          output.innerHTML += property + ': ' + bmw[property] + '<br />'
      &lt;div id="output"&gt;&lt;/div&gt;

      【讨论】:

        【解决方案5】:

        为什么不使用 Object.keys/Object.values 然后适当地添加 forEach 循环来访问键/值?

        1. Object.keys(Car).forEach(prop => console.log(prop)) //它将打印 Car 对象的键

        2. Object.values(Car).forEach(prop=>console.log(prop)) // 它将打印 Car 对象的值

        但在嵌套对象的情况下它不会提供所需的输出。所以继续使用 normaml forEach 循环或传统的循环方法...

        【讨论】:

        • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2018-12-28
        • 2011-03-03
        • 1970-01-01
        • 2018-06-28
        • 1970-01-01
        • 2019-01-31
        • 2013-07-11
        • 2010-10-25
        • 1970-01-01
        相关资源
        最近更新 更多