对象:不只是键值对
JavaScript对象远不止简单的键值集合,它们是动态属性的容器,每个属性都包含值及其可写性、可枚举性和可配置性的特性。
// 创建对象的三种方式
const obj1 = {}; // 字面量
const obj2 = new Object(); // 构造函数
const obj3 = Object.create(null); // 指定原型
// 属性描述符详解
const user = {};
Object.defineProperty(user, 'name', {
value: 'John',
writable: false, // 不可写
enumerable: true, // 可枚举
configurable: true // 可配置
});
原型链:JS的继承魔法
每个对象都有隐藏的__proto__属性,指向其原型对象,形成原型链实现继承。
// 原型继承示例
const animal = { eats: true };
const rabbit = { jumps: true };
rabbit.__proto__ = animal; // 设置原型
console.log(rabbit.eats); // true,从animal继承
现代JS对象技巧
ES6引入的对象解构、扩展运算符等方法极大提升了开发效率。
// 对象解构与扩展
const person = { name: 'Alice', age: 30, city: 'Beijing' };
const { name, ...rest } = person; // 解构
const updated = { ...person, age: 31 }; // 扩展运算符创建新对象
// 对象冻结防止意外修改
const config = Object.freeze({ apiUrl: 'https://api.example.com' });
掌握这些对象特性与技巧,能够写出更健壮、高效的JavaScript代码,真正发挥这门语言的强大威力。
JavaScript对象深度解析

被折叠的 条评论
为什么被折叠?



