JavaScript 中的存取器

在 ES5.1 中,定义了对象的两种存取器实现方式,对象直接量语法与Object.defineProperty()方法

直接量语法

定义存取器属性最简单的方法是使用对象直接量语法的一种扩展写法:

get代表可读set代表可写,取值与赋值与一般的对象属性一致,平时中的简单写法:

这种写法,如果没有提前使用objcet.property=value赋值,直接object.property取值,得到的是undefined,我们可以稍微修改,使得属性有原始值:

Object.defineProperty()

详情参考:MDN:Object.defineProperty(),该方法允许精确添加或修改对象的属性。对象里目前存在的属性描述符有两种主要形式:数据描述符和存取描述符。数据描述符是一个拥有可写或不可写值的属性。存取描述符是由一对 getter-setter 函数功能来描述的属性。描述符必须是两种形式之一;不能同时是两者。

描述符一种有六种:configurableenumerablevaluewritablegetset
数据描述符:valuewritable;
存取描述符:getset;
共有:enumerableconfigurable

举例说明,使用定义一个可读,可写,可枚举,可配置的属性有两种方式:

在实际的使用场景中,一般在类(Class)中使用,为类的属性添加setter与getter,比如:

通过这种方式,即实现了对构造函数内部属性的存取。

参考资料:《JavaScript权威指南》第6章    MDN:Object.defineProperty()

发表评论

电子邮件地址不会被公开。 必填项已用*标注