为了账号安全,请及时绑定邮箱和手机立即绑定

JS的数据描述符和存取描述符,相当于两种规则,只能选取一种规则?

JS的数据描述符和存取描述符,相当于两种规则,只能选取一种规则?

临摹微笑 2018-11-29 22:15:29
1: 给对象属性设置属性描述符, 设置数据描述符或者存取描述符,只会启用其中一种2: 3: get方法没有效果了.
查看完整描述

1 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

JS的数据描述符和存取描述符只能选取一种规则。
ToPropertyDescriptor规范定义部分如下:

If either desc.[[Get]] or desc.[[Set]] is present, then
If either desc.[[Value]] or desc.[[Writable]] is present, throw a TypeError exception.

以上说明如果在使用defineProperty方法的时候,如果同时定义了这两种描述符,会报错,测试截图如下:

https://img1.sycdn.imooc.com//5c29afbe0001141304740179.jpg

另外,如果使用一种描述符定义属性后,再使用另一种属性描述符重新定义也是可以的,只不过两种描述符不共有的描述符会重置为默认值。
ValidateAndApplyPropertyDescriptor规范定义部分如下:

https://img1.sycdn.imooc.com//5c29afcd0001e9c808940281.jpg

测试截图如下:

https://img1.sycdn.imooc.com//5c29afdc000146d504440275.jpg

查看完整回答
反对 回复 2018-12-31
  • 1 回答
  • 0 关注
  • 738 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号