2023年8月28日 星期一

查詢 Property 的組態

 查詢 Property 的組態

前言

  在先前的 在 Object 中定義 Property 介紹過自定義的 Property ,Property 在定義時要設定 Property 的組態,如可不可寫,定義完後可以查詢嗎?在此把學習的過程做個紀錄。4


內容

  要得到 Property 的組態可以透過 Object.getOwnPropertyDescriptor() ,範例如下

let obj = {
  a : 10
};
Object.defineProperty( obj , 'prop1' ,{
  value : 20
} );
Object.defineProperty( obj , 'prop2' ,{
  value : 30,
  writable:true
} );
//
descriptorA = Object.getOwnPropertyDescriptor(obj, 'a');
console.log( descriptorA.value );//10
console.log( descriptorA.writable );//true
descriptorA.writable = false;
obj.a = 100;
console.log( obj.a );//100
//
descriptorProp1 = Object.getOwnPropertyDescriptor(obj, 'prop1');
console.log( descriptorProp1.value );//20
console.log( descriptorProp1.writable );//false
//
descriptorProp2 = Object.getOwnPropertyDescriptor(obj, 'prop2');
console.log( descriptorProp2.value );//30
console.log( descriptorProp2.writable );//true


透過 Object.getOwnPropertyDescriptor() 可以的到 Desciptor ,透過讀取該物件的 Property 就可以知道 Property 的組態 ,範例的 a 是一般的 Property,從 value 與 writable 讀出來的值如預期,可以透過 Desciptor  讀取組態,那可以透過 Desciptor  改變組態嗎?範例透過改變 Desciptor  的 writable 來實驗,結果是"不行"!接著實驗自定義的 Property ,prop1 與 porp2 皆如預期。


參考資料

[ developer.mozilla.org ] Object.getOwnPropertyDescriptor()


相關文章與資料

在 Object 中定義 Property

沒有留言:

張貼留言