我看到了以下ES6代码并且感到困惑:
class GuitarAmp {
constructor ({ cabinet = 'spruce', distortion = '1', volume = '0' } = {}) {
Object.assign(this, {
cabinet, distortion, volume
});
}
}
Object.assign的第二个参数是什么?它不是一个对象,它是什么?我只是注意到它也是构造函数参数的一部分,这部分:
{ cabinet = 'spruce', distortion = '1', volume = '0' } = {}
我不熟悉这种新语法,所以我不知道如何查找它,因为我不知道它叫什么。有人知道这个词吗?
答案 0 :(得分:3)
所以,在上面的代码中,我相信:
{
cabinet, distortion, volume
}
在ES5中:
{
cabinet: cabinet,
distortion: distortion,
volume: volume,
}
当键和值相同时,它只是写对象的简短形式。
答案 1 :(得分:1)
第一个参数的默认值为{}
,但如果提供,我们在第一个参数对象中嵌套了默认值,如cabinet = 'spruce', distortion = '1', volume = '0'
因此,如果第一个对象参数提供有例如{ cabinet = 'test', distortion = '4', volume = '2' }
然后,this
将如下
{
cabinet: 'test',
distortion: '4',
volume: '2'
}
否则,它将具有param中提供的默认值。
答案 2 :(得分:1)
它是使用简写语法的对象文字。这只是语法糖。
var a = "A";
var b = "B";
var c = "C";
这两个是相同的:
{ a: a, b: b, c: c }
{ a, b, c }
换句话说,如果将变量抛出到对象文字中,那么属性名称将变为变量名称。