Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分解ES6嵌套对象_Javascript - Fatal编程技术网

Javascript 分解ES6嵌套对象

Javascript 分解ES6嵌套对象,javascript,Javascript,如何将ES6与分解结合使用,为用户提供选项。不确定如何使用嵌套对象而不被部分对象覆盖默认值 : 函数抽屉6chart({size='big',cords={x:0,y:0},radius=25}={}) { 控制台日志(大小、跳线、半径); //画些图表 } 抽屉6图表({ 跳线:{x:18}, 半径:30 });您可以(按原样)为总体选项对象提供默认值,但不能(直接)为其中的从属对象提供默认值 我喜欢,但它确实定义了函数中的x和y符号 如果不需要,可以在函数中使用Object.assign:

如何将ES6与分解结合使用,为用户提供选项。不确定如何使用嵌套对象而不被部分对象覆盖默认值

:

函数抽屉6chart({size='big',cords={x:0,y:0},radius=25}={})
{
控制台日志(大小、跳线、半径);
//画些图表
}
抽屉6图表({
跳线:{x:18},
半径:30

});您可以(按原样)为总体选项对象提供默认值,但不能(直接)为其中的从属对象提供默认值

我喜欢,但它确实定义了函数中的
x
y
符号

如果不需要,可以在函数中使用
Object.assign

cords = Object.assign({}, {x: 0, y:0}, cords);
感觉像ES5,但是

为了避免重复,可以将默认值放在变量中:()

输出:

big {"x":18,"y":0} 25 大{“x”:18,“y”:0}25
您需要将
coords
分解为
x
an
y
组件,并分别为它们提供默认值:

function drawES6Chart({size='big', cords: {x=0, y=0} = {}, radius=25} = {}) {
    const coords = {x, y}
    console.log(size, coords, radius);
}
如果根本没有提供
cords
对象,那么您编写它的方式只会提供默认值。
您已经为complete options对象选择了正确的方法,它的默认值也是
{}
,而不是编写

function drawES6Chart({size, cords, radius} = {size:'big', cords:{x:0, y:0}, radius:25}) {
    // not working

这与ES6的“类”无关。它与ES6的默认参数有关。不确定是否可以让解释器知道嵌套对象也应该被解构<代码>;{let{x=0,y=0}=cords;cords={x:x,y:y}?这工作绝对完美。对象分配是关键,默认对象使事情变得不那么冗长。谢谢大家!@杰里米比-所以你不应该把答案标为正确吗?我想我试过了!叹息就寝时间。。。编辑:啊,不,不完全是那样。但这比
Object.assign
方法要干净得多。我非常喜欢这种方法,只是它会初始化标识符x和y。这就是我试图避免使用奇怪的代码块-
let
@PaulS.:是的,这与原始代码不同,但我认为它没有任何问题。两个可能被使用的变量几乎没有害处,是吗?
function drawES6Chart({size, cords, radius} = {size:'big', cords:{x:0, y:0}, radius:25}) {
    // not working