以下四個操作會忽略O(shè)bject.getOwnPropertyDescriptor中enumerable為false的屬性。(可枚舉屬性)
for...in循環(huán):只遍歷對象自身的和繼承的可枚舉的屬性草描。
Object.keys():返回對象自身的所有可枚舉的屬性的鍵名。
JSON.stringify():只串行化對象自身的可枚舉的屬性触机。
Object.assign(): 忽略enumerable為false的屬性颠猴,只拷貝對象自身的可枚舉的屬性洛巢。
這四個操作之中,前三個是 ES5 就有的厦滤,最后一個Object.assign()是 ES6 新增的援岩。其中,只有for...in會返回繼承的屬性掏导,其他三個方法都會忽略繼承的屬性享怀,只處理對象自身的屬性。實際上趟咆,引入“可枚舉”(enumerable)這個概念的最初目的添瓷,就是讓某些屬性可以規(guī)避掉for...in操作,不然所有內(nèi)部屬性和方法都會被遍歷到值纱。比如鳞贷,對象原型的toString方法,以及數(shù)組的length屬性虐唠,就通過“可枚舉性”搀愧,從而避免被for...in遍歷到。