1.数据属性
定义在对象内部的叫做数据,数据具有属性:4个属性如下
前三个默认都是true,最后一个默认是undefined
1.Configurable:是否可以被delete删除,
2.Enumerable:是否能通过for-in循环遍历,
3.Writable:是否可以修改属性的值,
4.Value:保存这个属性的数据值
要修改属性默认的特性,必须使用 ECMAScript 5的 Object.defineProperty()方法
而且,一旦把属性定义为不可配置的, 就不能再把它变回可配置了。此时,再调用 Object.defineProperty()方法修改除 writable 之外 的特性,都会导致错误
2.访问器属性
访问器属性不包含数据值。它包含一对getter和setter函数。当读取访问器属性时,会调用getter函数并返回有效值;当写入访问器属性时,会调用setter函数并传入新值,setter函数负责处理数据。该属性有四个特性:
1.[[Configurable]]:默认为true。表示能否通过delete删除属性从而重新定义属性,能否修改属性特性,或者能否把属性修改为访问器属性;
2.[[Enumerable]]:默认为true。表示能否通过for-in循环返回属性;
3.[[Get]]:读取属性时调用的函数,默认为undefined;
4.[[Set]]:写入属性时调用的函数,默认为undefined。
其他:
定义多个属性:Object.defineProperties()
读取属性的特性:Object.getOwnPropertyDescriptor()