有一个需要复制到另一个对象的输入对象是很常见的。通常,您需要复制一些属性,最终得到一个非常相似的对象,但属性较少。
此处引用销毁赋值
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Object_destructuring
假设您有这个输入对象:
// an object with data
let oldObject = {
a: 'this is a',
b: 'this is b',
c: 'this is c',
d: 'this is d'
}
我就是这样做的:
let myNewObject = {
a: oldObject.a,
b: oldObject.b,
c: oldObject.c
}
这是我一直使用的:
// new version
let { a, b, c } = oldObject
let myNewObject = { a, b, c };
这个我开始用了,好像可以用:
// newer version
let myNewObject = { a, b, c } = oldObject;
新版本的问题是我要声明变量A、B和C。在这种情况下没有问题。(
almost
但是如果他们的名字是
input
,
output
,
temp
,
i
或可能已在作用域中声明的变量的任何其他通用名称。
所以这个解决方案是很好的,但更好的是,这些变量是以某种方式在该行中创建和销毁的,而不是在其他地方可用的。
myNewObject
当然应该是可以接近的。
我试着用这样的函数包装它,但一点运气也没有:
let myNewObject = (function() { return { a, b, c } = oldObject })();
let myNewObject = (function() { let temp = { a, b, c } = oldObject; return temp; })();
所以我不确定什么是最好的方法来实现这一点,我正在接近,但我错过了一些东西。