在JS中拿捏对象
1.获取对象的某个属性
const object = { a: 1, b: 2, c: 3 };
// 1. 点语法(在工作中最常用的)
console.log(object.a);
// 输出:1
// 2. 方括号语法(属性名含特殊字符、动态属性名时必须用)
console.log(object['c']);
// 输出:3
// 动态属性名示例(比如从变量获取属性名)
const propName = 'a';
console.log(object[propName]);
// 输出:1
2.修改对象属性(更新值)
const object = { a: 1, b: 2, c: 3 };
// 修改已有属性 object.a = 10;
// 点语法 object['b'] = 20;
// 方括号语法 console.log(object);
// 输出:{ a: 10, b: 20, c: 3 }
3.新增对象属性
const object = { a: 1, b: 2, c: 3 };
// 新增属性 d(点语法)
object.d = 4;
// 新增属性 e(方括号语法,支持特殊字符)
object['e-f'] = 5;
console.log(object);
// 输出:{ a: 1, b: 2, c: 3, d: 4, 'e-f': 5 }
4.删除对象属性
const object = { a: 1, b: 2, c: 3 };
// 删除属性 b
delete object.b;
// 删除属性 c(方括号语法)
delete object['c'];
console.log(object);
// 输出:{ a: 1 }
console.log(object.b);
// 输出:undefined(属性已不存在)
注:必须使用 delete 关键字(直接赋值 undefined 不会真正删除属性,只是值为空):
5.获取对象的键
const object = { a: 1, b: 2, c: 3 };
// 获取所有属性名组成的数组 const keys = Object.keys(object);
console.log(keys);
// 输出:['a', 'b', 'c']
6.获取对象的值
const object = { a: 1, b: 2, c: 3 };
// 获取多个属性值,返回数组
const values = Object.values(object);
console.log(values); // 输出:[1, 2, 3]
7.直接获取键值对
const object = { a: 1, b: 2, c: 3 };
// 获取所有 [key, value] 键值对数组
const entries = Object.entries(object);
console.log(entries);
// 输出:[['a', 1], ['b', 2], ['c', 3]]
// 遍历键值对(解构赋值更简洁)
entries.forEach(([key, value]) => { console.log(`属性:${key},值:${value}`); });
// 输出
// 属性:a,值:1
// 属性:b,值:2
//属性:c,值:3
8.复制对象(避免直接赋值导致的引用问题)
(在工作中比较常用)
const object = { a: 1, b: 2, c: 3 };
// 1. 浅拷贝(适合无嵌套对象的场景)
const copy1 = { ...object };
// 扩展运算符
const copy2 = Object.assign({}, object);
// Object.assign 方法
// 2. 深拷贝(适合有嵌套对象的场景,简单场景用 JSON 方法)
const nestedObj = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(nestedObj));