Appearance
访问器属性
本节目标:理解“访问器属性”的核心思路,并能把它用于实际开发或面试表达。 访问器属性不能直接定义,必须使用
Object.defineProperty()来定义
访问器属性不包含数据值; 它们包含一对儿getter和setter函数。
在读取访问器属性时,会调用getter函数,这个函数负责返回有效的值; 在写入访问器属性时,会调用setter函数,这个函数负责决定如何处理数据。
不一定非要同时指定getter和setter。 只指定getter意味着属性不能写,尝试写入属性会被忽略,严格模式下会报错。 只指定setter意味着属性不能读,尝试读取属性会返回undefined,严格模式下会报错。
访问器属性有如下4个特性: [[Configurable]]:表示
- 能否通过
delete删除属性,从而重新定义属性; - 能否修改属性的特性,如
Configurable和Enumerable; - 能否把属性修改为数据属性
; - 直接在对象上定义的属性,默认值为
true。使用Object.defineProperty()方法定义的访问器属性此值默认为false。
[[Enumerable]]**:**表示:
- 能否通过
for-in循环返回属性;
[[Get]]:在读取属性时调用的函数。默认值为undefined。 [[Set]]**:**在写入属性时调用的函数。默认值为undefined。
