JS对象数据属性和访问器属性

1.数据属性

定义在对象内部的叫做数据,数据具有属性:4个属性如下

前三个默认都是true,最后一个默认是undefined

1.Configurable:是否可以被delete删除,

2.Enumerable:是否能通过for-in循环遍历,

3.Writable:是否可以修改属性的值,

4.Value:保存这个属性的数据值

要修改属性默认的特性,必须使用 ECMAScript 5的 Object.defineProperty()方法

defineProperty使用举例

而且,一旦把属性定义为不可配置的, 就不能再把它变回可配置了。此时,再调用 Object.defineProperty()方法修改除 writable 之外 的特性,都会导致错误


除了writable 无法再次修改属性

2.访问器属性

访问器属性不包含数据值。它包含一对getter和setter函数。当读取访问器属性时,会调用getter函数并返回有效值;当写入访问器属性时,会调用setter函数并传入新值,setter函数负责处理数据。该属性有四个特性:

1.[[Configurable]]:默认为true。表示能否通过delete删除属性从而重新定义属性,能否修改属性特性,或者能否把属性修改为访问器属性;

2.[[Enumerable]]:默认为true。表示能否通过for-in循环返回属性;

3.[[Get]]:读取属性时调用的函数,默认为undefined;

4.[[Set]]:写入属性时调用的函数,默认为undefined。

其实,通过_name还是可以访问到的

其他:

定义多个属性:Object.defineProperties()

读取属性的特性:Object.getOwnPropertyDescriptor()

你可能感兴趣的:(JS对象数据属性和访问器属性)