🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

JavaScript:理解属性描述器(Property Descriptor)

一个 JavaScript 对象里面可能有一堆属性,属性都有一个名字,还有对应的值,除了这些其实还隐含了一些东西,这就是 Property Descriptor。来做个实验:

const user = {
  name: 'ninghao',
};

const descriptor = Object.getOwnPropertyDescriptor(user, 'name');

console.log(descriptor);

上面定义了一个叫 user 的对象,里面只有一个属性叫 name,对应的值是个字符串 ninghao。如果要检查一下 name 这个属性的 Descriptor,可以使用 Object 上的 getOwnProperyDescriptor 方法,把对象还有对象的属性交给这个方法就可以了。

执行上面的代码,会返回:

{ value: 'ninghao',
  writable: true,
  enumerable: true,
  configurable: true }

上面返回的结果就是 user 对象里的 name 这个属性的 Descriptor,value 是属性的值,writable 表示是否可写,enumerable 表示是否可枚举,configurable 表示是否可配置。

再做个实验:

Object.defineProperty(user, 'name', { writable: false });

user.name = 'wanghao';

上面用 Object 上的 defineProperty 设置了一下 user 对象的 name 属性的 Descriptor,把它的 writable 设置成了 false。接着我们试着设置一下 user 的 name 属性的值,执行代码会返回:

TypeError: Cannot assign to read only property 'name' of object ...

提示不能给只读属性分配新的值,这是因为我们之前把 name 这个属性的 writable 设置成了 false。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点