日期:2014-05-16  浏览次数:20387 次

javascript学习笔记三

6章面向对象的程序设计

?????? ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”

6.1理解对象

?????? 创建自定义对象的最简单方式就是创建一个Object的实例,然后再为它添加属性和方法。

6.1.1 属性类型

?????? ECMA2625版在定义只有内部采用的特性(attribute)时,描述了属性(property)的各种特征。

?????? ECMAScript中有两种属性:数据属性和访问器属性。

?????? 1.数据属性

?????? 数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有两个描述其行为的特性。

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

2[[Enumerable]]:表示能否通过for-in循环返回属性。

3[[Writable]]:表示能否修改属性的值。

4[[Value]]:包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候,把新值保存在这个位置。这个特性的默认值为undefined

要修改属性默认的特性,必须使用ECMAScript5Object.defineProperty()方法。这个方法接收三个参数:属性所在的对象、属性的名字和一个描述符对象。其中,描述符(descriptor)对象的属性必须是:configurableenumerablewritablevalue。设置其中的一个或多个值,可以修改对应的特性值。

2.访问器属性

访问器属性不包含数据值;它们包含一对儿gettersetter函数(不过,这两个都不是必需的)。

1[[Configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。

2[[Enumerable]]:表示能否通过for-in循环返回属性。

3[[Get]]:在读取属性时调用的函数。默认值为undefined

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