在 JavaScript 中,对象是通过属性描述(property descriptor)进行描述的,我们可以
配置以下关键字。
● configurable —— 如果设为 true,则可以修改或删除属性。如果设为 false,则
不允许修改。
● enumerable —— 如果设为 true,则可在 for-in 循环对象属性时出现(我们很快
会介绍 for-in 循环)。
● value —— 指定属性的值,默认为 undefined。
● writable —— 如果设为 true,则可通过赋值语句修改属性值。
● get —— 定义 getter 函数,当访问属性时发生调用,不能与 value 与 writable 同
时使用。
● set —— 定义 setter 函数,当对属性赋值时发生调用,也不能与 value 与 writable
同时使用
 
通过简单赋值语句创建对象属性,例如:
ninja.name = "Yoshi";
该赋值语句创建的属性可被修改或删除、可遍历、可写,Ninja 的 name 属性值被设 7.3 实现继承
185
置为 Yoshi,get 和 set 函数均为 undefined。
如果想调整属性的配置信息,我们可以使用内置的 Object.defineProperty 方法,传入 3
个参数:属性所在的对象、属性名和属性描述对象。查看清单 7.9 中的示例代码。
清单 7.9 配置属性
var ninja = {};
ninja.name = "Yoshi";
ninja.weapon = "kusarigama";
Object.defineProperty(ninja, "sneaky", {
  configurable: false,
  enumerable: false,
  value: true,
  writable: true
});
assert("sneaky" in ninja, "We can access the new property");
for(let prop in ninja){
  assert(prop !== undefined, "An enumerated property: " + prop);
}

 

首先创建一个空对象,再通过传统赋值语句添加两个属性:name 与 weapon。接着,
使用内置 Object.defineProperty 方法定义属性 sneaky,属性描述为不可配置、不可枚举、
属性值为 true。由于属性 sneaky 是可写的,所以可被改变。
posted on 2022-02-25 15:02  occc  阅读(105)  评论(0编辑  收藏  举报