關於自定義 Property 的 enumerable
前言
自定義 Property 可以設定 enumerable ,這功能是做什麼用的呢?在此把學習的過程做個紀錄。
內容
範例如下
let obj = { a : 10, b : 20, }; Object.defineProperty( obj , 'prop1' ,{ value : 42, writable:true, } ); Object.defineProperty( obj , 'prop2' ,{ value : 99, writable:true, enumerable:true, } ); // console.log( Object.keys(obj) );//["a", "b", "prop2"] console.log( Object.getOwnPropertyNames(obj) );//["a", "b", "prop1", "prop2"]
enumerable 的功能是否可已被"列舉",但如果你總是透過 Object.getOwnPropertyNames() 來列舉的話,你會發現沒有作用,但如果透過 Object.keys() 來列舉的話就可以發現差別,範例的 prop1 在 Object.keys() 不會被列舉出來,所以 enumerable 設定的是會不會被 Object.keys() 列舉出來,順帶一提, Object.keys() 和 for ... in 的結果是一樣的。
參考資料
[ developer.mozilla.org ] Object.defineProperty()
沒有留言:
張貼留言