属性(JavaScript)
JavaScript 属性是一个对象的成员,它将键与值联系起来。JavaScript 对象是一种数据结构,它存储了属性的集合。
属性包含以下组成部分:
- 一个名称(也叫做键),它可能是字符串或符号值。
- 一个值,它可以是任何 JavaScript 值。具有函数值的属性也可以称为方法。
- 一些特性,它们指定了属性的读取和写入方式。属性可能具有
configurable
、enumerable
和writable
特性。
访问器属性没有实际的“值”。值是通过一对函数间接表示的,其中一个(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
之间的联系是对象的属性。
在类的概念中,属性可以分为实例属性和静态属性,前者由每个实例拥有,后者由类拥有,持有所有实例共有的数据。在继承的概念下,属性也可以分为自有属性和继承属性,前者由对象本身拥有,后者由对象的原型链中的对象拥有。
关于读写属性的更多信息,请参见使用对象。
参见
- 维基百科上的属性(计算机科学)词条
- JavaScript 面向对象编程介绍
- 对象属性
- 属性的可枚举性和所有权