JavaScript中一个对象中的默认析构函数参数

JavaScript中一个对象中的默认析构函数参数,javascript,ecmascript-6,Javascript,Ecmascript 6,是否有可能访问一个对象中所有已破坏的函数参数 所以我有一个函数头: function coolFunctionName({test1 = "foo", test2 = "bar"}) 我想在一个对象中访问它们参数不起作用,因为没有存储在函数调用中没有值的默认参数 有没有一个好的干净的方法可以做到这一点 编辑:我不需要被破坏的参数。我只想把它们都放在一个对象中。您所能做的就是: function coolFunctionName({test1 = "foo", test2 = "bar"}) {

是否有可能访问一个对象中所有已破坏的函数参数

所以我有一个函数头:

function coolFunctionName({test1 = "foo", test2 = "bar"})
我想在一个对象中访问它们<代码>参数不起作用,因为没有存储在函数调用中没有值的默认参数

有没有一个好的干净的方法可以做到这一点

编辑:我不需要被破坏的参数。我只想把它们都放在一个对象中。

您所能做的就是:

function coolFunctionName({test1 = "foo", test2 = "bar"}) {
    let arguments = { test1, test2 };
    /* Do whatever you want with arguments */
}

为了达到预期的效果,请在函数中使用下面设置默认值的选项

函数名称(x){
x、 test1=x.test1 | |‘foo’
x、 test2=x.test2 | |“bar”
console.log(x)
}
设z={}
名称(z);
设y={test1:“zzz”,test2:“yyy”}

名称(y)灵感来源于Faly的回答我认为我得到了“最干净”的解决方案:

function coolFunctionName(options = {}){
    options = Object.assign({
        test1: "foo",
        test2: "bar
    }, options);
}

我在一个对象中有参数,我不必写多个值名。我对此不满意,因为它不在函数头中,但这是我找到的最好的解决方案。

然后不要在参数列表中对它进行分解,而是在(args={})对象中接收它,然后在函数体中执行现在的操作?是的,但我希望有默认值。在函数体内部进行分解时也可以这样做。一句话,您所要求的在当前的JS中还不可能实现。解构允许针对单个变量,并且允许为每个目标指定一个默认值。它不会创建新对象,您必须自己创建。你不能,伯吉。好的,谢谢,这很有帮助。被否决的人能解释被否决的票吗?这是个主意,但我必须把每个参数名写两次。这不是很清楚。没有其他想法我没有投反对票,但是-我假设它被否决是因为a)没有证据表明进行了研究,b)这个答案没有用处,因为它没有直接解决、解释或回答OP的问题。在发布答案之前,请做一些工作。向下投票没有解释为什么只是一种糟糕和可怜的做法,值总是
test1:“foo”
test2:“bar”
@VincentHoch Drei,应该检查参数是否有值,然后分配默认值,更新了我的代码笔和answer@VincentHoch-Drei,更新并使其简单,适用于所有浏览器,如果使用Object.assign,则可能需要使用polyfill-