JavaScript点滴积累之Object.defineProperty用法(错误A property cannot both have accessors and be writable or have a value)

Object.defineProperty(obj, prop, descriptor):给对象定义属性,或者修改对象的属性,并且返回该对象。对象接收三个参数:对象,属性名,属性描述(限定)。

1.descriptor参数必须是一个对象类型,并且属性可以分为三类(必须,数据,可访问性),分别如下:

必须类:

  •   configurable:属性是否可以改变,或删除 默认false
  •   enumerable:能否for in 默认false

数据类:

  •   value:直接设置属性值
  •   writable:是否可以修改

可访问性:

  •   get:通过function设置属性值
  •   set:通过function改变值

注意:(value writable)和(get set)不能同时出现。否则就会出现这样的一句错误:

2.两种等效的写法(属性可读可写):

3.构建只读属性,针对属性的限制在descriptor参数里面进行设置。代码实现如下:

4.提一个问题,这个问题一般不会出现,那就是能不能定义一个只能写不能读的属性?(纯属YY

首先通过第一种方式来尝试实现:

尝试第二种:

写这篇博客的目的主要是遇到了题目中的错误,索性就搞清楚下Object.defineProperty用法。希望对大家帮助!

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/7
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注