返回
多角度解读 JavaScript 对象,全面理解对象属性和特性
前端
2023-10-24 21:16:52
JavaScript 对象属性:枚举与值
JavaScript 对象的属性可以分为两种:枚举属性和值属性。
- 枚举属性: 可以通过
for-in
循环来枚举。枚举属性的[[ Enumerable ]]
特性默认为true
。 - 值属性: 不能通过
for-in
循环来枚举。值属性的[[ Enumerable ]]
特性默认为false
。
JavaScript 对象特性
JavaScript 对象的特性包括:
- [[ Value ]]: 表示对象属性的实际值。
- [[ Writable ]]: 表示对象属性是否可以被修改。默认情况下,对象属性是可写的。
- [[ Enumerable ]]: 表示对象属性是否可以通过
for-in
循环来枚举。默认情况下,对象属性是可枚举的。 - [[ Configurable ]]: 表示对象属性是否可以被删除或重新定义。默认情况下,对象属性是可配置的。
JavaScript 对象的原型和继承
每个 JavaScript 对象都有一个原型。原型是一个对象,它包含了该对象继承的属性和方法。对象可以通过 prototype
属性访问其原型。
对象可以通过继承关系从原型继承属性和方法。当一个对象从另一个对象继承时,它将获得该对象的原型中的所有属性和方法。
实例
// 创建一个对象
const person = {
name: "John Doe",
age: 30
};
// 枚举对象属性
for (const property in person) {
console.log(property);
}
// 输出:
// name
// age
// 获取对象属性的值
console.log(person.name); // "John Doe"
console.log(person.age); // 30
// 修改对象属性的值
person.name = "Jane Doe";
console.log(person.name); // "Jane Doe"
// 添加一个新属性
person.job = "Software Engineer";
console.log(person.job); // "Software Engineer"
// 获取对象的原型
const personPrototype = Object.getPrototypeOf(person);
console.log(personPrototype);
// 输出:
// {constructor: ƒ}
// 获取原型中的属性
console.log(personPrototype.hasOwnProperty("toString")); // true
总结
JavaScript 对象是一种强大的数据结构,它可以用来存储和组织数据。对象属性可以分为枚举属性和值属性。对象特性包括 [[ Value ]]
、[[ Writable ]]
、[[ Enumerable ]]
和 [[ Configurable ]]
。对象可以通过继承关系从原型继承属性和方法。