属性(JavaScript)

JavaScript 属性对象的成员,它将一个键与一个值相关联。JavaScript 对象是一种数据结构,用于存储属性的集合。

属性由以下部分组成:

  • 一个名称(也称为),它可以是字符串符号
  • 一个,可以是任何 JavaScript 值。值是函数的属性也可以称为方法
  • 一些特性,它们指定了属性如何被读取和写入。属性可以具有 configurableenumerablewritable 特性。

访问器属性没有实际的“值”。值通过一对函数间接表示:一个(getter)在读取值时调用,另一个(setter)在设置值时调用。然而,访问器属性表面上行为像常规数据属性,因为 getter 和 setter 函数会自动调用,并且通常对 JavaScript 代码透明。

属性的值(包括 getter 和 setter)及其特性存储在一个称为属性描述符的数据记录中。许多方法,例如 Object.getOwnPropertyDescriptor()Object.defineProperty(),都使用属性描述符。

术语属性本身不对应任何 JavaScript 值——它是一个抽象概念。例如,在以下代码中:

js
const obj = {
  a: 1,
  b() {},
};

对象 obj 有两个属性。第一个属性的键是 "a",值是 1。第二个属性的键是 "b",值是一个函数(使用方法语法)。"a"1"b"function 的关联就是对象的属性。

的上下文中,属性可以分为实例属性(每个实例拥有)和静态属性(由类拥有,存储所有实例共有的数据)。在继承的上下文中,属性还可以分为自有属性(由对象本身拥有)和继承属性(由对象原型链中的对象拥有)。

有关读取和写入属性的更多信息,请参阅使用对象