老师,Reflect.defineProperty()定义的属性是不是只读的?

来源:2-48 Reflect

程序媛_Lisa

2020-10-26

老师,我用Reflect.defineProperty()定义的属性无法用Reflect.deleteProperty()来删除,所以猜测是否这样定义的属性未只读属性
var obj = { x: 1, y: 2 };
Reflect.defineProperty(obj, ‘z’, {value: 3}); // true
obj; // {x: 1, y: 2, z:3}
Reflect.deleteProperty(obj, ‘y’); // true
Reflect.deleteProperty(obj, ‘z’); // false
obj; // {x: 1, z: 3}

写回答

1回答

慕粉1926294646

2020-11-06

这里面有个概念就对象属性描述符的概念,https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty,你用Reflect.defineProperty(obj, ‘z’, {value: 3});  定义的时候没有设置其他描述符,只设置了 value,没有设置 configurable(默认 false,不能删除),你增加这个配置并改为 true 就可以了

0
0

再学JavaScript ES(6-10)全版本语法大全

前端无门槛学习,从ES6到ES10,一套课程掌握JS最新语法

1182 学习 · 336 问题

查看课程