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

javascript学习笔记二

5章引用类型

?????? 引用类型的值(对象)是引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常常被称为类,但这种称呼并不妥当。尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。

?????? 对象是某个特定引用类型的实例。新对象是使用new操作符后跟一个构造函数来创建的。

5.1 Object类型

?????? 在通过对象字面量定义对象时,实际上不会调用Object构造函数。

?????? 一般来讲,命名参数虽然容易处理,但在有多个可选参数的情况下就会显示不够灵活。最好的做法是对那些必需值使用命名参数,而使用对象字面量来封装多个可选参数。

5.2 Array类型

?????? ECMAScript数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript数组的每一项可以保存任何类型的数据。而且,ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。

5.3 Date类型

?????? ECMAScriptDate类型是在早期Java中的java.util.Date类基础上构建的。

5.4 RegExp类型

?????? ECMAScript通过RegExp类型来支持正则表达式。使用下面类似perl的语法,就可以创建一个正则表达式。

?????? var expression=/pattern/flags;

?????? 其中的模式(pattern)部分可以是任意简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。每个正则表达式都可以带有一个或多个标志(flags),用以标明正则表达式的行为。

正则表达式的匹配模式支持下列3个标志:

?????? 1g:表示全局(global)模式,即模式将被应用与所有字符串,而非发现第一个匹配项时立即停止。

?????? 2i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写。

?????? 3m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

5.5 Function类型

?????? 每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。

5.5.1 没有重载(深入理解)

?????? 将函数名想象为指针,也有助于理解为什么ECMAScript中没有函数重载的概念。

5.5.2 函数声明与函数表达式

?????? 实际上,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。

5.5.3 作为值的函数