JavaScript中是否有快速移除并返回对象属性的方法?
单步实现对象属性提取并删除的方法
嘿,这个需求挺实用的!咱们可以通过给对象添加一个自定义的doSomething方法,把「提取属性值」和「删除原对象属性」这两步合并成一次调用,完美实现你想要的效果。
实现思路
给目标对象添加一个方法,这个方法接收属性名作为参数:
- 先获取该属性对应的值
- 从原对象中删除这个属性
- 返回获取到的属性值
这样调用一次方法就能同时完成两个操作,不用分开写赋值和删除代码。
代码示例
基础实现版本
const objectA = { a: 1, b: 2 }; // 给objectA添加自定义方法 objectA.doSomething = function(key) { // 先获取属性值 const value = this[key]; // 删除原对象的该属性 delete this[key]; // 返回属性值 return value; }; // 单步调用实现需求 const b = objectA.doSomething("b"); const objectB = { b }; console.log(objectA); // 输出: { a: 1 } console.log(objectB); // 输出: { b: 2 }
ES6解构风格版本
如果你更喜欢ES6的解构语法,也可以这样写:
const objectA = { a: 1, b: 2 }; objectA.doSomething = function(key) { // 解构出目标属性和剩余属性 const { [key]: value, ...remainingProps } = this; // 把剩余属性赋值回原对象 Object.assign(this, remainingProps); return value; }; // 调用效果和上面完全一致 const b = objectA.doSomething("b"); const objectB = { b };
补充说明
- 因为对象是引用类型,方法里修改
this(也就是objectA)会直接改变原对象,这正好符合你的需求。 - 这个自定义方法可以复用,后续如果要提取其他属性,直接调用
objectA.doSomething("属性名")就行。
内容的提问来源于stack exchange,提问作者mindlis




