跳转到主要内容
模块 3 · 第 2 课(共 4)课程中的10/32~10 min
模块课程(2/4)

对象:键值映射

JS 中的对象是键→值对的无序集合。 键是字符串(或 Symbol),值可以是任何内容:数字、字符串、 数组、其他对象、函数。它是最常用的数据结构 语言:域中的每个“记录”通常都是一个对象。

JS
const utente = {
  nome: 'Anna',
  eta: 28,
  attivo: true,
  ruoli: ['admin', 'editor'],
};

阅读属性:点与括号

有两个等效的符号:

JS
utente.nome; // 'Anna'    (dot — the normal form)
utente['nome']; // 'Anna'    (bracket — equivalent)

// Brackets are MANDATORY when:
// 1) the key is not a valid identifier
const tag = { 'codice-fiscale': 'ABC123' };
tag['codice-fiscale']; // OK
// tag.codice-fiscale;      // syntax error

// 2) the key is computed (variable/expression)
const campo = 'eta';
utente[campo]; // 28

缺少属性返回 undefined,没有错误:

JS
utente.telefono; // undefined

添加、修改、删除

JS
const u = { nome: 'Anna' };
u.eta = 28; // adds
u.nome = 'Anna B.'; // modifies
delete u.eta; // removes the property

delete 是一个关键字。这将是一个罕见的用例:大多数 当你想要生成一个没有该键的 新 对象时(我们会看到这个 与传播)。

简写:像变量一样命名的键

当键名与变量名匹配时,可以省略重复:

JS
const nome = 'Anna';
const eta = 28;

const u1 = { nome: nome, eta: eta }; // explicit form
const u2 = { nome, eta }; // shorthand, equivalent

检查财产的存在

三个选项,按优先顺序排列:

JS
'nome' in utente; // true   ← in operator
utente.nome !== undefined; // true   ← works almost always
Object.hasOwn(utente, 'nome'); // true   ← modern, safe

尝试一下

锻炼#js.m3.l2.e1
尝试:0加载中...

创建对象 user = { name: 'Sara', Age: 22 },然后添加设置为 true 的 'active' 属性并返回该对象作为最后一个表达式。

正在加载编辑器...
显示提示

您可以使用点符号在事后添加属性。

3 次尝试后可用的解决方案

复习练习

锻炼#js.m3.l2.e2
尝试:0加载中...

给定 `product = { code: 'A1', Price: 9.9 }` 和字符串 `key = 'price'`,使用括号表示法返回价格(最后一个表达式的计算结果必须为 9.9)。

正在加载编辑器...
显示提示

使用括号,您可以传递变量作为键。

3 次尝试后可用的解决方案