JavaScript 对象属性

属性是所有 JavaScript 对象最重要的部分。


JavaScript 属性

属性指的是与 JavaScript 对象相关的值。

JavaScript 对象是无序属性的集合。

属性通常可以被修改、添加和删除,但是某些属性是只读的。


访问 JavaScript 属性

访问对象属性的语法是:

  1. objectName.property // person.age

或者

  1. objectName["property"] // person["age"]

或者

  1. objectName[expression] // x = "age"; person[x]

表达式必须计算为属性名。

例子 1
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 对象属性</h1>
  5. <p>访问对象属性有两种不同的方法:</p>
  6. <p>您可以使用 .property 或 ["property"]。</p>
  7. <p id="demo"></p>
  8. <script>
  9. var person = {
  10. firstname:"埃隆",
  11. lastname:"马斯克",
  12. age:50,
  13. eyecolor:"蓝色"
  14. };
  15. document.getElementById("demo").innerHTML = person.firstname + " 已经 " + person.age + " 岁了。";
  16. </script>
  17. </body>
  18. </html>
例子 2
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JavaScript 对象属性</h1>
  5. <p>访问对象属性有两种不同的方法:</p>
  6. <p>您可以使用 .property 或 ["property"]。</p>
  7. <p id="demo"></p>
  8. <script>
  9. var person = {
  10. firstname:"埃隆",
  11. lastname:"马斯克",
  12. age:50,
  13. eyecolor:"蓝色"
  14. };
  15. document.getElementById("demo").innerHTML = person["firstname"] + " 已经 " + person["age"] + " 岁了。";
  16. </script>
  17. </body>
  18. </html>

JavaScript for…in 循环

JavaScript for…in 语句遍历对象的属性。

语法
  1. objectName[expression] // x = "age"; person[x]

for…in 循环中的代码块会为每个属性执行一次。循环对象的属性:

  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. firstname:"埃隆",
  10. lastname:"马斯克",
  11. age:50
  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 对象已存在 - 那么您可以为其添加新属性:

  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. firstname:"埃隆",
  10. lastname:"马斯克",
  11. age:50,
  12. eyecolor:"蓝色"
  13. };
  14. person.nationality = "美国人";
  15. document.getElementById("demo").innerHTML =
  16. person.firstname + " 是 " + person.nationality + ".";
  17. </script>
  18. </body>
  19. </html>

您不能使用预留词作为属性名(或方法名)。请使用 JavaScript 命名规则。


删除属性

delete 关键词从对象中删除属性:

  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. firstname:"埃隆",
  10. lastname:"马斯克",
  11. age:50,
  12. eyecolor:"蓝色"
  13. };
  14. delete person.age;
  15. document.getElementById("demo").innerHTML =
  16. person.firstname + " 已经 " + person.age + " 岁了。";
  17. </script>
  18. </body>
  19. </html>

也可以这样删除:

  1. delete person[age];

delete 关键词会同时删除属性的值和属性本身。

删除完成后,属性在被添加回来之前是无法使用的。

delete 操作符被设计用于对象属性。它对变量或函数没有影响。

delete 操作符不应被用于预定义的 JavaScript 对象属性。这样做会使应用程序崩溃。


多层嵌套的对象

  1. myObj = {
  2. name:"约翰",
  3. age:30,
  4. cars: {
  5. car1:"奔驰",
  6. car2:"宝马",
  7. car3:"玛莎拉蒂"
  8. }
  9. }

可以使用点符号或括号符号访问嵌套对象:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>JavaScript 对象属性</h2>
  5. <p>访问多层嵌套对象:</p>
  6. <p id="demo"></p>
  7. <script>
  8. const myObj = {
  9. name:"约翰",
  10. age:30,
  11. cars: {
  12. car1:"奔驰",
  13. car2:"宝马",
  14. car3:"玛莎拉蒂"
  15. }
  16. }
  17. document.getElementById("demo").innerHTML = myObj.cars.car2;
  18. </script>
  19. </body>
  20. </html>

或者这样

  1. myObj.cars["car2"];

或者

  1. myObj.["cars"]["car2"];

再或者

  1. let p1 = "cars";
  2. let p2 = "car2";
  3. myObj[p1][p2];

嵌套数组和对象

对象中的值可以是数组,数组中的值可以是对象:

  1. const myObj = {
  2. name: "约翰",
  3. age: 30,
  4. cars: [
  5. {name:"奔驰", "models":["GLA", "GLC", "GLS"]},
  6. {name:"宝马", "models":["X1", "X3", "X5"]},
  7. {name:"保时捷", "models":["Macan", "Cayenne"]}
  8. ]
  9. }

要访问数组中的数组,请对每个数组使用for-in循环:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>嵌套数组和对象</h2>
  5. <p id="demo"></p>
  6. <script>
  7. let x = "";
  8. const myObj = {
  9. name: "约翰",
  10. age: 30,
  11. cars: [
  12. {name:"奔驰", "models":["GLA", "GLC", "GLS"]},
  13. {name:"宝马", "models":["X1", "X3", "X5"]},
  14. {name:"保时捷", "models":["Macan", "Cayenne"]}
  15. ]
  16. }
  17. for (let i in myObj.cars) {
  18. x += "<h2>" + myObj.cars[i].name + "</h2>";
  19. for (let j in myObj.cars[i].models) {
  20. x += myObj.cars[i].models[j] + "<br>";
  21. }
  22. }
  23. document.getElementById("demo").innerHTML = x;
  24. </script>
  25. </body>
  26. </html>

属性值

所有属性都有名称。此外它们还有值。

值是属性的特性之一。

其他特性包括:可列举、可配置、可写。

这些特性定义了属性被访问的方式(是可读的还是可写的?)

在 JavaScript 中,所有属性都是可读的,但是只有值是可修改的(只有当属性为可写时)。


原型属性

JavaScript 对象继承了它们的原型的属性。

delete 关键词不会删除被继承的属性,但是如果您删除了某个原型属性,则将影响到所有从原型继承的对象。

分类导航