拿捏 JS 对象:8 大核心操作(获取 / 修改 / 拷贝等)详解

54 阅读2分钟

在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));