属性(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 之间的联系是对象的属性。

的概念中,属性可以分为实例属性静态属性,前者由每个实例拥有,后者由类拥有,持有所有实例共有的数据。在继承的概念下,属性也可以分为自有属性继承属性,前者由对象本身拥有,后者由对象的原型链中的对象拥有。

关于读写属性的更多信息,请参见使用对象

参见