← 返回首页
对象  |  web.dev for China

对象 使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

对象是一种离散的数据类型, 原语是一种数据类型,有一个关键值 不同之处:与基元不同,对象是可变的。对象可以包含数据 与标识符(如变量)相关联,但它会保留自己的 object 数据 而不管其中包含什么数据。

除了基元之外,所有 JavaScript 值都是对象,但由于即使是 由于原始字面量的存在, 原型继承,但实际上 常说,JavaScript 实际上是由对象构成的

对象字面量是一对大括号,括在零个或多个键值对之间 这些键值对称为“属性”该字段可以包含任何 JavaScript 值。

{ "myProperty" : true }

属性 key 可以是任何符号或 字符串。与为代码分配标识符时一样, 变量,那么用作属性键的字符串应该是可预测的, 描述性:

let carAttributes = { "color" : "red" }; carAttributes > Object { color: "red" }

属性键需要使用单引号 (') 或双引号 (") 字符串字面量,而不是 模板字面量

let carAttributes = { `keyString` : false }; > Uncaught SyntaxError: expected property name, got template literal

属性值可以是任何数据类型。对象的属性本身可以 包含具有自己属性的对象:

let myObject = { 'key' : { 'subkey' : true, 'othersubkey' : false } }; myObject; > Object { key: Object { subkey: true, othersubkey: false } }

当属性的值是函数时,该属性称为“方法”。

const myObject = { "myProperty" : true, myMethod() { console.log( "This is a method." ); } } myObject.myProperty; > true myObject.myMethod(); > "This is a method."

您还可以使用 new 关键字创建对象:

let myObject = new Object();

在前面的示例中,为新创建的对象字面量分配了 变量。这不是必需的,因为与任何其他数据类型一样,您可以使用 可以在预期对象的位置使用没有标识符的对象。不过, 在可能造成混淆的任何上下文中,对象字面量都需要使用括号 (假设两个大括号语法相同 ({}))。 初始化变量绝不需要执行此操作。

{ "value" : 2 } > Uncaught SyntaxError: unexpected token: ':' ({ "value" : 2 }) > Object { value: 2 } let valObj = { "value" : 2 }; valObj; > Object { value: 2 }

与基元不同,创建 一个使用 new Object() 并创建一个对象字面量的对象,因为 结果,无论是哪种情况,都将是具有继承自 Object 原型设计而成。但两者之间存在一个实际区别 语法。

new 关键字必须定义一个稍后填充数据的空对象:

let myObject = new Object(); myObject.booleanValue = true; myObject.stringValue = "My string.";

对象字面量可以在创建后填充数据:

let myObject = { 'booleanValue' : true, 'stringValue' : "My string." };

虽然 new Object() 几乎没有什么实际用途,但可用于转变基元 数据值转换成各自类型的对象,例如使用 new 关键字及其构造函数 函数。例如,以下代码在功能上等同于 new Number( 10 ):

let myObject = new Object( 10 ); myObject; > Number { 10 }

null 和 undefined 值会生成空对象,对象在功能上完全相同 调用 new Object(),而无需提供参数。

将对象字面量作为参数传递给 new Object() 会传递该对象 字面量,而不对其进行更改:

let myObject = new Object( { myValue : 10 } ); myObject; > Object { myValue: 10 }

就像为基元值使用构造函数一样,为对象使用构造函数一样 与使用对象字面量表示法相比几乎没有什么好处。即使是在创建 空对象,以便稍后填充值,因此开发者倾向于使用 为简单起见,使用文字符号。

检查您的理解情况

您可以使用哪些类型的表示法来设置对象的属性?

点表示法
括号表示法
句点表示法
线条符号

以下哪一项是获取值的正确语法 共 myProp

myObj["myProp"];
myObj{"myProp"};
myObj("myProp");

如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。

最后更新时间 (UTC):2024-03-31。

[null,null,["最后更新时间 (UTC):2024-03-31。"],[],[]]