ES6解构:如何处理两个具有相同属性名称的对象?

22

我有两个JavaScript对象,语法如下:

let section = { name: "foo", tables: [] }
let field   = { name: "bar", properties: {} }

有一个函数需要接收两个对象作为参数,但在函数中我只使用了每个对象的名称,因此我想知道是否可以在函数声明中解构这两个对象,例如:

function something( {name}, {name} ) {
  //code
} 

第一个应该是section.name,第二个应该是field.name

在这种情况下有没有一种解构的方法?或者我只需要在函数中期望名称即可?

哪一个更好?

谢谢。


你试过了吗?有出现错误吗? - JC Ford
如果只使用名称属性,为什么不直接传递每个参数的名称属性呢?为什么要使用解构呢? - jfriend00
当然,由于相同的名称被称为它检索到:在此上下文中不允许重复参数名的未捕获语法错误。 - Carlos Herrera Plata
您可以重命名解构变量,例如 something({name: sectionName}, {name: fieldName}) - Bobbyrogers
是的,第二个选项只需要传递名称属性并命名变量不同,但我想知道是否有一种方法可以解构具有相同名称的两个属性,看起来Andy已经回答了我的问题,谢谢大家。 - Carlos Herrera Plata
是的谢谢,我尝试了,但是 Stack 给了我一个消息:“您必须等待2分钟” xD 抱歉。 - Carlos Herrera Plata
1个回答

38

看起来您可以标记/重新分配参数:{before<colon>after}

var section = { name: 'foo', tables: [] };
var field = { name: "bar", properties: {} };

function something({ name: sectionName }, { name: fieldName }) {
  console.log(sectionName, fieldName);
}

something(section, field);


1
+1,但在生产中请使用一些更有意义的名称。something({ name: sectionName }, { name: fieldName }) - Amberlamps
6
当然没有人会使用 foo 或 bar。你的评论过于学究。 - J. Lin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接