博客 / 詳情

返回

Day 50/100 Object.defineProperty()有幾個參數

(一)需求

被問到了,本來以為會,結果發現之前理解的不大對。

(二)介紹

1、答案

是3個參數

  • obj 要定義屬性的對象;
  • prop 要定義或修改的的屬性名稱或Symbol
  • descriptor 要定義或修改的屬性描述符

對象裏目前存在的屬性描述符有兩種主要形式:數據描述符存取描述符

  • 數據描述符是一個具有值的屬性,該值可以是可寫的,也可以是不可寫的。
  • 存取描述符是由 getter 函數和 setter 函數所描述的屬性。

一個描述符只能是這兩者其中之一;不能同時是兩者。

(三)Demo

const object1 = {};

Object.defineProperty(object1, 'property1', {
  value: 42,
  writable: false
});

object1.property1 = 77;
// throws an error in strict mode

console.log(object1.property1);
// expected output: 42

描述符可擁有的鍵值

configurable enumerable value writable get set
數據描述符 可以 可以 可以 可以 不可以 不可以
存取描述符 可以 可以 不可以 不可以 可以 可以

如果一個描述符不具有 valuewritablegetset 中的任意一個鍵,那麼它將被認為是一個數據描述符。如果一個描述符同時擁有 valuewritablegetset 鍵,則會產生一個異常。

參考鏈接

https://developer.mozilla.org...

寫在最後的話

學習路上,常常會懈怠。

《有想學技術需要監督的同學嘛~》
https://mp.weixin.qq.com/s/Fy...

如果有需要的夥伴,可以加我微信:learningisconnecting
或者可以關注我的公眾號:國星聊成長(我會分享成長的方法)
user avatar uncletong_doge 頭像 201926 頭像 user_p5fejtxs 頭像 lidalei 頭像 gfeteam 頭像
5 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.