使用来自析构对象的对象和键解构参数?

时间:2017-12-12 00:33:40

标签: javascript ecmascript-6 destructuring

是否可以通过使用另一个析构参数作为键从传入的对象中获取一个析构变量?

var test = { 
    a: { 
        b: 'c' 
    },
    access: 'b' 
};

myFunc(test);

function myFunc( { a : { access /*???*/ } } ) {
    console.log(/*???*/);  // should output 'c'
}

工作方式 -

function myFunc( { a, access }) {
    console.log(a[access]);  // should output 'c'
}

1 个答案:

答案 0 :(得分:2)

是的,这可以使用计算属性名称:

function myFunc( { access, a : { [access]: val } } ) {
    console.log(val); // does output 'c' when called with test
}

在访问access的属性之前,您需要先确保a已初始化。

但是,我会建议避免这种情况,这会让任何读者感到困惑。不要试图聪明。你的工作方式也是最易读的方式。