对象就是带标签的箱子,用键值对存数据,一个变量存一堆相关信息。
核心三步:
① 创建——let obj = { name:"小明", age:18 }
② 取值——obj.name 或 obj["name"]
③ 改值/加值——obj.age = 20、obj.gender = "男"
坑:键名不加引号也行、删除属性用 delete、对象赋值是引用不是复制。
// 方式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"]([]) | 名字存在变量里、或带空格/横杠时用 |
// key里装着名字"color"
let 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);
// 加:原本没有age,赋值就加上了
cat.age = 2;
// 改:名字重新赋值
cat.name = "大桔子";
// 删:用 delete 关键字整项拿掉
delete cat.age;
属性 vs 方法别搞混:存普通数据叫属性,存函数叫方法。它们单独放是变量/函数,装进对象里就改名叫属性/方法了。
① 用在哪:商品信息、用户资料、配置项——都是一个对象装一整套描述。
② 常见坑:属性名带横杠却用 点语法;动态取属性写成 cat.key 取了字面量 "key"。
③ 怎么解决:动态/特殊名一律 cat[key];删除用 delete cat.age。
| API | 作用 | 参数 | 返回值 | 代码示例 |
|---|---|---|---|---|
| {} | 花括号创建对象 | 属性名:值 | 对象 | let cat = { name: "橘", age: 2 }; |
| obj.key | 点语法读/写属性 | 属性名 | 值 | cat.name; // "橘" |
| obj[key] | 方括号读动态属性 | 变量 | 值 | cat["name"]; // 变量当key |
| delete obj.key | 删掉一个属性 | 属性名 | 真/假 | delete cat.age; |
| Object.keys(obj) | 列出所有属性名 | 对象 | 数组 | Object.keys(cat); // ["name","age"] |
| JSON.stringify(obj) | 对象转成字符串 | 对象 | 字符串 | JSON.stringify(cat); // 变字符串 |