深入理解JavaScript对象——存储结构化数据

深入理解JavaScript对象——存储结构化数据

在现实世界中的实体,比如一个人、一本书,拥有多个相关联的属性。为了表示这种结构化的数据,JavaScript提供了“对象”这种数据类型。

这篇文章我们将针对该话题进行深入的学习。

1. 对象的概念

对象是属性的集合。每个属性都是一个“键值对”。

  • 属性名(键,Key):​​ 是一个字符串(或Symbol类型),用于标识属性。
  • 属性值(Value):​​ 可以是任何JavaScript数据类型(字符串、数字、数组,甚至是另一个函数)。

可以把对象想象成一张员工档案卡:

  • 属性名是卡片上的栏目,如“姓名”、“工号”、“部门”。
  • 属性值是栏目的具体内容。

2. 创建对象

最常用的方式是使用对象字面量语法 {}

// 创建一个代表一个人的对象
let person = {
    firstName: "张",
    lastName: "三",
    age: 30,
    isStudent: false
};

在花括号 {}内,我们定义了一系列用逗号分隔的属性。每个属性由键和值通过冒号 :连接。

3. 访问对象属性

有两种主要方式来访问对象的属性。

点符号(.):​​ 最常用,非常简洁。

console.log(person.firstName); // 输出:"张"
console.log(person.age);       // 输出:30

方括号符号([]):​​ 当属性名包含空格、连字符,或者是变量时,必须使用方括号。

console.log(person["lastName"]); // 输出:"三"

let propKey = "age";
console.log(person[propKey]); // 输出:30,因为propKey的值是"age"

4. 对象方法

当对象的属性值是一个函数时,我们称该属性为对象的方法。方法是对象能够执行的动作。

let person = {
    name: "李四",
    sayHello: function() { // sayHello 是一个方法
        console.log("你好,我的名字是 " + this.name);
    },
    // ES6中更简洁的方法写法
    introduce() {
        console.log(`我叫${this.name}。`); // 使用模板字符串嵌入变量
    }
};

// 调用方法
person.sayHello();   // 输出:你好,我的名字是 李四
person.introduce();  // 输出:我叫李四。

5. this关键字

在对象方法内部,this关键字指向调用该方法的对象。它使得方法能够访问同一对象上的其他属性。

在上面的例子中,this.name指的就是 person.name

6. 修改和添加属性

对象是动态的,可以随时修改或添加属性。

let car = {};
console.log(car); // 空对象 {}

// 添加属性
car.brand = "Toyota";
car.color = "red";

// 修改属性
car.color = "blue";

// 添加方法
car.honk = function() {
    console.log("Beep Beep!");
};

console.log(car); // {brand: "Toyota", color: "blue", honk: ƒ}
car.honk(); // 输出:Beep Beep!

7. 实战练习

创建一个 book对象,包含书名、作者、出版年份和一个显示书籍信息的方法。

let book = {
    title: "JavaScript高级程序设计",
    author: "Nicholas C. Zakas",
    year: 2020,
    getInfo: function() {
        return `《${this.title}》,作者:${this.author},出版于${this.year}年。`;
    }
};

let info = book.getInfo();
console.log(info); // 输出:《JavaScript高级程序设计》,作者:Nicholas C. Zakas,出版于2020年。

总结

对象是JavaScript中用于组织和管理相关数据及功能的核心数据结构。通过属性和方法,我们可以创建出能够准确描述现实世界实体的复杂结构。理解对象是学习后续更高级主题(如数组方法、DOM操作)的关键。

发表评论