JavaScript 中的对象属性是一个键值对,其中键是字符串,而值可以是任何类型。键值对中的键也被称为属性名。因此,属性就是键(或名称)与值之间的关联。
在另一种说法中,对象是一组属性(键值对)。然而,键值对并不是以特定的顺序存储在对象中的。为了编写对象语法,使用大括号 {}
。每个键值对都写在大括号内并通过逗号分隔。
您可以在 JavaScript 中操作对象属性。例如,您可以添加、删除或更新对象的属性。
语法
您可以按照以下语法定义对象中的属性:
const fruit = {
name: "Apple",
price: 100,
}
在上述语法中,fruit
是一个对象。fruit
对象包含了 name
和 price
属性。name
属性的值是 'Apple'
,而 price
是 100。
在对象中,键只能是字符串或符号。如果您使用其他数据类型作为键,对象会隐式地将其转换成字符串。属性值可以是任何东西,比如对象、集合、数组、字符串、函数等。
访问对象属性
有三种方式可以在 JavaScript 中访问对象属性。
点记法
您可以使用点记法/语法来访问对象属性。
obj.prop;
在上述语法中,obj
是一个对象,而 prop
是其需要访问值的属性。
方括号记法
您可以使用包含作为字符串的属性的方括号对来访问特定属性。
obj["prop"]
在上述语法中,我们从对象中访问 prop
属性。
当您使用无效标识符作为对象键时,不能使用点记法来访问属性。因此,您需要使用方括号记法。如果标识符是以数字开头、包含空格或破折号,则它是无效的。
使用表达式
有时,您需要使用变量或表达式动态地访问对象属性。因此,您可以在方括号记法中写入表达式。表达式可以是变量、数学表达式等。
obj[expression]
上述语法首先计算表达式,然后从对象中访问与结果值相同的属性。您不需要将表达式写在引号中。
访问嵌套对象属性
访问嵌套对象属性非常类似于访问对象属性。您可以使用点记法或方括号记法。
Obj.prop.nestedProp
Obj["prop"]["nestedProp"];
在上述语法中,prop
是 obj
对象的一个属性,而 nestedProp
是 prop
对象的一个属性。
添加或更新对象属性
您可以使用点记法或方括号记法更新或向对象添加新的属性。您可以通过访问对象属性并赋给它一个新的值来实现这一点。如果属性已经存在,它会更新属性值;否则,它会向对象添加这个属性。
Obj.prop = new_value;
Obj["prop"] = new_value;
删除对象属性
您可以使用 delete
操作符来删除特定的对象属性。
delete obj.prop;
枚举对象属性
有多种方式来枚举对象属性。Object.keys()
方法返回对象的键作为一个数组。然而,我们将使用 for...in
循环来遍历对象的每一个属性。
for (let key in table) {
}
属性特性
对象属性包含四个特性:
-
-
enumerable - 包含布尔值表示对象是否可迭代。
-
configurable - 包含布尔值表示对象是否可配置。
-
writable - 同样包含布尔值,表示对象是否可写。
默认情况下,除了对象属性的 value
特性之外,您无法编辑其他特性。您需要使用 defineProperty()
或 defineProperties()
方法来更新其他特性。