JavaScript 对象原型

如何显示JavaScript对象?

显示JavaScript对象将输出[object Object]。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象</h2>
  5. <p>显示JavaScript对象将输出[object Object]:</p>
  6. <p id="demo"></p>
  7. <script>
  8. const person = {
  9. name: "John",
  10. age: 30,
  11. city: "New York"
  12. };
  13. document.getElementById("demo").innerHTML = person;
  14. </script>
  15. </body>
  16. </html>

显示JavaScript对象的一些常见解决方案有:

  • 按名称显示对象属性
  • 在循环中显示对象属性
  • 使用Object.values()显示对象
  • 使用JSON.stringify()显示对象

显示对象属性

对象的属性可以显示为字符串:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象</h2>
  5. <p>显示对象属性:</p>
  6. <p id="demo"></p>
  7. <script>
  8. const person = {
  9. name: "John",
  10. age: 30,
  11. city: "New York"
  12. };
  13. document.getElementById("demo").innerHTML = person.name + ", " + person.age + ", " + person.city;
  14. </script>
  15. </body>
  16. </html>

在循环中显示对象

对象的属性可以在循环中收集:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象</h2>
  5. <p>显示对象属性:</p>
  6. <p id="demo"></p>
  7. <script>
  8. const person = {
  9. name: "John",
  10. age: 30,
  11. city: "New York"
  12. };
  13. let txt = "";
  14. for (let x in person) {
  15. txt += person[x] + " ";
  16. };
  17. document.getElementById("demo").innerHTML = txt;
  18. </script>
  19. </body>
  20. </html>

提示:必须在循环中使用person[x]。person.x将不起作用(因为x是一个变量)。


使用Object.values()

可以使用object.values() 将任何JavaScript对象转换为数组:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象</h2>
  5. <p>Object.values() 讲对象转换为数组.</p>
  6. <p id="demo"></p>
  7. <script>
  8. const person = {
  9. name: "John",
  10. age: 30,
  11. city: "New York"
  12. };
  13. document.getElementById("demo").innerHTML = Object.values(person);
  14. </script>
  15. </body>
  16. </html>

使用JSON.stringify()

任何JavaScript对象都可以通过JavaScript函数JSON.stringify() 进行字符串化(转换为字符串):

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象</h2>
  5. <p>以 JSON 格式显示对象:</p>
  6. <p id="demo"></p>
  7. <script>
  8. const person = {
  9. name: "John",
  10. age: 30,
  11. city: "New York"
  12. };
  13. document.getElementById("demo").innerHTML = JSON.stringify(person);
  14. </script>
  15. </body>
  16. </html>

结果将是一个遵循JSON格式的字符串:

  1. {"name":"John","age":50,"city":"New York"}

JSON.stringify()包含在JavaScript中,并且在所有主流浏览器中都受支持。


Stringify Dates

JSON.stringify将日期转换为字符串:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript Objects</h2>
  5. <p>JSON.stringify将日期转换为字符串:</p>
  6. <p id="demo"></p>
  7. <script>
  8. var person = {
  9. name: "John",
  10. today: new Date()
  11. };
  12. document.getElementById("demo").innerHTML = JSON.stringify(person);
  13. </script>
  14. </body>
  15. </html>

Stringify Functions

JSON.stringify 不能转换函数:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象</h2>
  5. <p>JSON.stringify 不能转换函数:</p>
  6. <p id="demo"></p>
  7. <script>
  8. const person = {
  9. name: "John",
  10. age: function () {return 30;}
  11. };
  12. document.getElementById("demo").innerHTML = JSON.stringify(person);
  13. </script>
  14. </body>
  15. </html>

解决方法是,在字符串化之前将函数转换为字符串。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象</h2>
  5. <p>JSON.stringify 不能转换函数:</p>
  6. <p>你可以先把它转换为string:</p>
  7. <p id="demo"></p>
  8. <script>
  9. const person = {
  10. name: "John",
  11. age: function () {return 30;}
  12. };
  13. person.age = person.age.toString();
  14. document.getElementById("demo").innerHTML = JSON.stringify(person);
  15. </script>
  16. </body>
  17. </html>

Stringify Arrays

stringify可以转换 JavaScript 数组:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 数组</h2>
  5. <p>JSON.stringify 可以转换 arrays:</p>
  6. <p id="demo"></p>
  7. <script>
  8. const arr = ["John", "Peter", "Sally", "Jane"];
  9. document.getElementById("demo").innerHTML = JSON.stringify(arr);
  10. </script>
  11. </body>
  12. </html>

分类导航