ES6 中,对象新增了以下扩展:
属性简写:当对象的属性名和属性值变量名相同时,可以省略属性名的冒号和属性值的变量名,例如:
const
x
=
1
;
const
y
=
2
;
const
obj
=
{
x
,
y
};
方法简写:在对象中定义方法时,可以省略
function
关键字和冒号,例如:
const
obj
=
{
foo
()
{
// ...
}
};
计算属性名:在定义对象的属性名时,可以使用表达式来计算属性名,例如:
const
obj
=
{
[
'prop'
+
42
]
:
'value'
};
对象解构赋值:可以通过对象解构赋值,快速从对象中提取属性值,例如:
const
{
x
,
y
}
=
obj
;
Object.assign 方法:可以使用
Object.assign
方法,将多个对象合并成一个对象,例如:
const
obj1
=
{
x
:
1
};
const
obj2
=
{
y
:
2
};
const
obj3
=
Object
.
assign
({},
obj1
,
obj2
);
Symbol 类型的属性名:ES6 引入了 Symbol 类型,可以作为属性名,例如:
const
prop
=
Symbol
(
'prop'
);
const
obj
=
{
[
prop
]
:
'value'
};
Proxy 对象:ES6 引入了 Proxy 对象,可以用于拦截对象的操作,例如:
const
proxy
=
new
Proxy
(
obj
,
{
get
(
target
,
prop
)
{
console
.
log
(
`Getting
${
prop
}
...`
);
return
target
[
prop
];
}
});