返回
剖析对象属性特性,助你前端进阶
前端
2023-11-04 13:47:04
对象属性揭秘
1. 对象属性本质
javascript中的对象本质上是一个关联数组,它包含键值对集合。每个键都是一个字符串,指向一个值。这个值可以是数字、字符串、布尔值、数组、对象或函数。
2. 访问对象属性
对象属性可以通过点语法或方括号语法来访问。点语法更常用,因为它更简洁。例如,以下代码访问对象的name属性:
const person = {
name: "John Doe",
age: 30,
};
console.log(person.name); // 输出: "John Doe"
方括号语法也可以用于访问对象属性,但它通常用于动态属性名称。例如,以下代码使用变量name来访问对象的name属性:
const person = {
name: "John Doe",
age: 30,
};
const name = "name";
console.log(person[name]); // 输出: "John Doe"
3. 设置对象属性
对象属性可以通过点语法或方括号语法来设置。点语法更常用,因为它更简洁。例如,以下代码设置对象的name属性为"Jane Doe":
const person = {
name: "John Doe",
age: 30,
};
person.name = "Jane Doe";
console.log(person.name); // 输出: "Jane Doe"
方括号语法也可以用于设置对象属性,但它通常用于动态属性名称。例如,以下代码使用变量name来设置对象的name属性为"Jane Doe":
const person = {
name: "John Doe",
age: 30,
};
const name = "name";
person[name] = "Jane Doe";
console.log(person.name); // 输出: "Jane Doe"
对象属性特性
1. 属性特性概述
每个对象属性都有一组特性,这些特性决定了属性的行为。这些特性包括:
- 可枚举性 :属性是否可以通过for-in循环或Object.keys()方法枚举。
- 可配置性 :属性是否可以被删除或修改其特性。
- 可写性 :属性的值是否可以被修改。
- 可获取性 :属性的值是否可以通过点语法或方括号语法获取。
2. 获取对象属性特性
对象属性的特性可以通过Object.getOwnPropertyDescriptor()方法获取。该方法接受一个属性名作为参数,并返回一个对象,该对象包含该属性的特性。例如,以下代码获取name属性的特性:
const person = {
name: "John Doe",
age: 30,
};
const descriptor = Object.getOwnPropertyDescriptor(person, "name");
console.log(descriptor);
输出:
{
value: "John Doe",
writable: true,
enumerable: true,
configurable: true
}
3. 设置对象属性特性
对象属性的特性可以通过Object.defineProperty()方法设置。该方法接受三个参数:要设置特性的对象、属性名和一个对象,该对象包含要设置的特性。例如,以下代码将name属性设置为不可枚举:
const person = {
name: "John Doe",
age: 30,
};
Object.defineProperty(person, "name", {
enumerable: false,
});
for (const property in person) {
console.log(property);
}
输出:
age
name属性现在不会被for-in循环枚举。
总结
对象属性特性是一个重要的概念,它可以帮助你更好地理解和控制对象的行为。通过理解和使用对象属性特性,你可以编写出更高质量、更健壮的代码。