1. 程式人生 > >9.對象的擴展

9.對象的擴展

排序。 cnblogs 循環 typeof nbsp getproto 表示法 set desc

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

返回一個數組,包含對象自身的所有屬性(不含Symbol屬性,但是包括不可枚舉屬性)。

(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方法返回一個數組,包含了參數對象的所有屬性。這個數組的屬性次序是這樣的,首先是數值屬性210,其次是字符串屬性ba,最後是Symbol屬性。

8._proto_屬性,Object.setPrototypeOf(),Object.getPrototypeOf()

9.Object.keys(),object.values(),Object.entries()

10.對象的擴展運算符

11.Object.getOwnPropertyDescriptors()

12.Null傳導運算符

9.對象的擴展