Object.defineProperty(obj, prop, desc)
- obj 需要定义属性的当前对象
- prop 当前需要定义的属性名
- desc 属性描述符
desc
value: 属性值, 默认undefined
set: setter方法, 默认undefined
get:getter方法, 默认undefined
configurable: 属性是否可配置和删除,默认false
- false 时,不能删除当前属性,且不能重新配置当前属性的描述符, 但是在writable: true的情况下,可以改变value的值
- true时,可以删除当前属性(delete xx.propName),可以配置当前属性所有描述符
writable:是否可修改,默认false
- true时,可修改value的值,
- false时,不可修改value的值
- 注意:可以把writable的状态由true改为false,但是无法由false改为true;
- 注意:若同时设置了set和get,writable自动转为true
enumerable:是否可枚举
- true时,可枚举,
- false时,不可枚举
let obj = {} let temp = null Object.defineProperty(obj, 'name', { get: function () { return temp }, set: function (val) { temp = val },
writable: true,
configurable: true,
enumerable: true
})