返回

剖析对象属性特性,助你前端进阶

前端

对象属性揭秘

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循环枚举。

总结

对象属性特性是一个重要的概念,它可以帮助你更好地理解和控制对象的行为。通过理解和使用对象属性特性,你可以编写出更高质量、更健壮的代码。