首页 > javascript > >Day 50/100 Object.defineProperty()有几个参数

Day 50/100 Object.defineProperty()有几个参数

时间:2022-04-27浏览次数:

(一)需求

被问到了,本来以为会,结果发现之前理解的不大对。

(二)介绍

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
数据描述符 可以 可以 可以 可以 不可以 不可以
存取描述符 可以 可以 不可以 不可以 可以 可以

如果一个描述符不具有 valuewritableget 和 set 中的任意一个键,那么它将被认为是一个数据描述符。如果一个描述符同时拥有 value 或 writable 和 get 或 set 键,则会产生一个异常。

参考链接