在JavaScript中,对象的“属性”是通过“属性描述”(property descriptor)进行表述的,其实属性描述就是“属性的属性”,主要包含以下关键字。
1、configurable —— 如果设为true,则可以修改或删除属性。如果设为false,则不允许修改。
2、enumerable —— 如果设为true,则可在for-in循环对象属性时出现。
3、value —— 指定属性的值,默认为undefined。
4、writable —— 如果设为true,则可通过赋值语句修改属性值。
5、get —— 定义getter函数,当访问属性时发生调用,不能与value与writable同时使用。
5、set —— 定义setter函数,当对属性赋值时发生调用,也不能与value与writable同时使用。
1、给实例对象添加可枚举和不可枚举的属性,代码如【清单-1】,执行后,只有eye属性打印出来。
/*
清单-1
*/
person = {};
//可枚举
Object.defineProperty(person, "eye", {
enumerable: true,
});
//不可枚举
Object.defineProperty(person, "ear", {
enumerable: false,
});
//使用`for-in`遍历`person`的可枚举的属性
for(let prop in person){
console.log("An enumerated property: " + prop);
}
2、给实例对象设置set回调函数,如清单-2,执行后,日志将被打印出来。
/*
清单-2
*/
person = {};
//定义set属性
Object.defineProperty(person, "name", {
set: function(){
console.log("call set property .");
}
});
person.name = "man";