9.對象的擴展
阿新 • • 發佈:2017-05-25
排序。 cnblogs 循環 typeof nbsp getproto 表示法 set desc 返回一個數組,包含對象自身的所有屬性(不含Symbol屬性,但是包括不可枚舉屬性)。
1.屬性的簡介表示法
2.屬性名表達式
3.方法的name屬性
4.Object.is()
5.Object.assign()
6.屬性的可枚舉性
7.屬性的遍歷
ES6一共有5種方法可以遍歷對象的屬性。
(1)for...in
for...in
循環遍歷對象自身的和繼承的可枚舉屬性(不含Symbol屬性)。
(2)Object.keys(obj)
Object.keys
返回一個數組,包括對象自身的(不含繼承的)所有可枚舉屬性(不含Symbol屬性)。
(3)Object.getOwnPropertyNames(obj)
Object.getOwnPropertyNames
(4)Object.getOwnPropertySymbols(obj)
Object.getOwnPropertySymbols
返回一個數組,包含對象自身的所有Symbol屬性。
(5)Reflect.ownKeys(obj)
Reflect.ownKeys
返回一個數組,包含對象自身的所有屬性,不管屬性名是Symbol或字符串,也不管是否可枚舉。
以上的5種方法遍歷對象的屬性,都遵守同樣的屬性遍歷的次序規則。
- 首先遍歷所有屬性名為數值的屬性,按照數字排序。
- 其次遍歷所有屬性名為字符串的屬性,按照生成時間排序。
- 最後遍歷所有屬性名為Symbol值的屬性,按照生成時間排序。
Reflect.ownKeys({ [Symbol()]:0, b:0, 10:0, 2:0, a:0 }) // [‘2‘, ‘10‘, ‘b‘, ‘a‘, Symbol()]
上面代碼中,Reflect.ownKeys
方法返回一個數組,包含了參數對象的所有屬性。這個數組的屬性次序是這樣的,首先是數值屬性2
和10
,其次是字符串屬性b
和a
,最後是Symbol屬性。
8._proto_屬性,Object.setPrototypeOf(),Object.getPrototypeOf()
9.Object.keys(),object.values(),Object.entries()
10.對象的擴展運算符
11.Object.getOwnPropertyDescriptors()
12.Null傳導運算符
9.對象的擴展