js 使用Object.defineProperty为对象定义属性

2022-04-13 13:35:18 浏览数 (1)

使用Object.defineProperty为对象添加属性

代码语言:javascript复制
let person = {name:'name',sex:'male'};
Object.defineProperty(person,'age',{value:18});
  • 默认不会被枚举,使用Object.keys(person)将获得[‘name’,‘sex’]。以下写法使之可枚举
代码语言:javascript复制
Object.defineProperty(person,'age',{value:18,enumerable:true});
  • 默认不可修改,使用person.age=19无法修改属性值。以下写法使之可改
代码语言:javascript复制
Object.defineProperty(person,'age',{value:18,writable:true});
  • 默认不可删除,使用delete person.age无法删除属性。以下写法使之可删
代码语言:javascript复制
Object.defineProperty(person,'age',{value:18,configurable:true});
  • 实现属性读写器
代码语言:javascript复制
let number = 18;
Object.defineProperty(person,'age',{
	get() {
		return number;
	},
	set(value) {
		number = value;
	}
});

0 人点赞