变量只能装一个东西、数组只能装一排差不多的东西,而对象能装「一整套完整描述」:一只猫有名字、性别、颜色,还会跑会叫。对象 = 属性(名词:它长啥样)+ 方法(动词:它会干啥)。
// 方式1:花括号(开发首选,一口气写完)
let cat = {
name: "小桔子", // 属性:名字
sex: "公猫", // 属性:性别
speed: function () { console.log("每小时跑50km"); } // 方法:会跑
};
// 方式2:先空壳,再一行行加点填
let cat = new Object();
cat.name = "小桔子"; // 加个名字
cat.sound = function () { console.log("喵喵"); }; // 加个会叫
| 写法 | 什么时候用 |
|---|---|
| cat.name(点) | 名字固定、好认,最常用 |
| cat["name"]([]) | 名字存在变量里、或带空格/横杠时用 |
let key = "color"; // key里装着名字"color"
console.log(cat[key]); // 按变量里的名字去取
console.log(cat["sex"]); // 方括号里直接写字符串也行
// 带横杠的名字必须用方括号
let p = { "home-address": "北京" };
console.log(p["home-address"]); // 点语法会报错
let cat = { name: "小桔子" };
console.log(cat.name); // 查:读出名字
cat.age = 2; // 加:原本没有age,赋值就加上了
cat.name = "大桔子"; // 改:名字重新赋值
delete cat.age; // 删:用 delete 关键字整项拿掉
属性 vs 方法别搞混:存普通数据叫属性,存函数叫方法。它们单独放是变量/函数,装进对象里就改名叫属性/方法了。
① 用在哪:商品信息、用户资料、配置项——都是一个对象装一整套描述。
② 常见坑:属性名带横杠却用 点语法;动态取属性写成 cat.key 取了字面量 "key"。
③ 怎么解决:动态/特殊名一律 cat[key];删除用 delete cat.age。