(一)需求
被問到了,本來以為會,結果發現之前理解的不大對。
(二)介紹
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 |
|
|---|---|---|---|---|---|---|
| 數據描述符 | 可以 | 可以 | 可以 | 可以 | 不可以 | 不可以 |
| 存取描述符 | 可以 | 可以 | 不可以 | 不可以 | 可以 | 可以 |
如果一個描述符不具有 value、writable、get 和 set 中的任意一個鍵,那麼它將被認為是一個數據描述符。如果一個描述符同時擁有 value 或 writable 和 get 或 set 鍵,則會產生一個異常。
參考鏈接
https://developer.mozilla.org...
寫在最後的話
學習路上,常常會懈怠。
《有想學技術需要監督的同學嘛~》
https://mp.weixin.qq.com/s/Fy...
如果有需要的夥伴,可以加我微信:learningisconnecting
或者可以關注我的公眾號:國星聊成長(我會分享成長的方法)