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