版权声明:一只会飞的狼 https://blog.csdn.net/sinat_40697723/article/details/87928808
一. 属性的简洁表示法
1. ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。即键和值同名时,只需要写一个就可以。
const foo = 'bar';
const baz = {foo};
baz // {foo: "bar"}
// 等同于
const baz = {foo: foo};
方法也可以简写:
const o = {
method() {
return "Hello!";
}
};
// 等同于
const o = {
method: function() {
return "Hello!";
}
};
二. 属性的可枚举性和遍历
可枚举性:
1. 对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为。Object.getOwnPropertyDescriptor
方法可以获取该属性的描述对象。
let obj = { foo: 123 };
Object.getOwnPropertyDescriptor(obj, 'foo')
// {
// value: 123,
// writable: true,
// enumerable: true,
// configurable: true
// }
描述对象的enumerable
属性,称为“可枚举性”。
2. 实际上,引入“可枚举”(enumerable
)这个概念的最初目的,就是让某些属性可以规避掉for...in
操作,不然所有内部属性和方法都会被遍历到。比如,对象原型的toString
方法,以及数组的length
属性,就通过“可枚举性”,从而避免被for...in
遍历到。所以,尽量不要用for...in
循环,而用Object.keys()
代替。
属性的遍历: