JavaScript 中的对象是存储数据和相关方法的一种方式。对象可以看作是一个键值对的集合,其中每个键都是一个字符串,而对应的值可以是任何类型的数据。
创建对象
创建对象的基本语法有两种:使用对象字面量和使用构造函数。
使用对象字面量
对象字面量是一种快速创建对象的方式,它通过花括号 {}
来定义对象及其属性。
const person = { name: "张三", age: 30, sayHello: function() { console.log(`你好,我是${this.name}。`); } };
使用构造函数
构造函数是一种更通用的方式来创建对象。构造函数是一种特殊的函数,主要用于在创建新对象时初始化对象的属性。
-- -------------------- ---- ------- -------- ------------ ---- - --------- - ----- -------- - ---- ------------- - ---------- - ---------------------------------- -- - ----- -------- - --- ------------ ----
访问对象属性
有几种方法可以访问对象的属性:
点符号
这是最常见的方式,用于访问对象的属性。
console.log(person.name); // 输出 "张三"
方括号符号
方括号符号允许使用变量或表达式来访问属性。
const propertyName = "name"; console.log(person[propertyName]); // 输出 "张三"
修改对象属性
修改对象属性可以通过点符号或方括号符号来完成。
person.age = 31; // 修改年龄 person["age"] = 32; // 同样可以修改年龄
添加新属性
可以像修改现有属性一样添加新的属性。
person.gender = "male"; // 添加性别属性 person["height"] = 180; // 也可以用方括号添加属性
删除对象属性
使用 delete
关键字可以删除对象的属性。
delete person.age;
遍历对象属性
for-in 循环
对于对象来说,使用 for-in
循环可以遍历其所有的可枚举属性。
for (let key in person) { if (person.hasOwnProperty(key)) { console.log(`${key}: ${person[key]}`); } }
Object.keys()
Object.keys()
方法会返回一个由一个给定对象的所有可枚举属性组成的数组,然后你可以使用这个数组来遍历对象的属性。
const keys = Object.keys(person); keys.forEach(key => { console.log(`${key}: ${person[key]}`); });
属性描述符
JavaScript 的对象属性可以具有不同的特性,这些特性被称为属性描述符。属性描述符可以通过 Object.getOwnPropertyDescriptor()
方法获取,并且可以通过 Object.defineProperty()
方法设置。
const descriptor = Object.getOwnPropertyDescriptor(person, "name"); console.log(descriptor); // 输出属性描述符对象 // 设置属性描述符 Object.defineProperty(person, "name", { writable: false, value: "李四" });
原型链与继承
JavaScript 中的继承是基于原型链的。每个对象都有一个内部链接指向另一个对象,这个被指向的对象叫做原型。原型对象同样拥有自己的原型,这样就形成了原型链。
创建原型
Person.prototype.sayGoodbye = function() { console.log(`再见,我是${this.name}。`); }; zhangsan.sayGoodbye(); // 输出 "再见,我是张三。"
继承
通过原型链,子类对象可以访问父类对象的属性和方法。
-- -------------------- ---- ------- -------- ------------- ---- ------ - ----------------- ----- ----- ---------- - ------ - ----------------- - -------------------------------- ----------------------------- - -------- ----- ------- - --- ------------- --- --- ------------------- -- -- ---------- --------------------- -- -- ----------
通过以上章节的学习,你应该掌握了 JavaScript 对象的基础知识以及如何操作它们。这为学习更复杂的概念如模块、框架等打下了坚实的基础。