2023年9月4日 星期一

關於自定義 Property 的 enumerable

 關於自定義 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()


相關文章與資料

檢查是否為自定義的 Property

沒有留言:

張貼留言