获取在参数中被解构的对象

时间:2016-11-13 02:35:05

标签: javascript ecmascript-6

假设我有一个函数将一个destructured对象作为箭头函数中的参数:

const myFunc = ({a, b, c}) => {
};

无论如何还是语法允许我将整个对象作为单个值获取?由于箭头函数不绑定arguments,我不能使用它。

是否可以对其进行命名,类似于:

const myFunc = (allArgs: {a, b, c}) => {
    console.log(allArgs);
};
myFunc({a:1, b:2, c:3}); // Output: {a:0, b:1, c: 2}

显然,这不是一个交易破坏者,并且有很多变通办法(要么不使用箭头功能,不要破坏,或者在需要时重新创建对象),但我想知道为方便起见。

2 个答案:

答案 0 :(得分:7)

你可以很容易地构造一个单一的参数。你在参数中失去了简洁的解构语法的优势,但它很容易而且仍然清晰:

const myFunc = (allArgs) => {
    const {a, b, c} = allArgs;
    console.log(allArgs);
};

或者,考虑是否需要箭头功能。如果您不需要访问词汇this,那么一个好的老式function() {}就可以解决问题并让您访问arguments

答案 1 :(得分:-1)

你太近了。使用等号而不是冒号来命名参数。



const myFunc = (allArgs = {a, b, c}) => {
    console.log(allArgs);
};
myFunc({a:1, b:2, c:3}); // Output: {"a":1, "b":2, "c": 3}




修改

我只是帮助使用命名参数语法,以便值可用。

如果你想破坏论证,你可以这样做:



const myFunc = ({a, b, c}) => {
    console.log(a);
    console.log(b);
    console.log(c);
};
myFunc({a:1, b:2, c:3}); // Output: {"a":1, "b":2, "c": 3}