05引用类型——JavaScript高级程序设计(笔记)
00.引用类型的值(对象)是引用类型的一个实例。引用类型是一种数据结构,用于将数据和功能组织在一起。他也常被称为类。引用类型有时候也被称为对象定义,因为他们描述的是一类对象所具有的属性和方法。
01.创建Object实例方式
a.new创建
var person = new Object();
person.name = "Nicholas";
person.age = 29;
b.对象字面量
var person = {
name : "Nicholas",
age : 29
}
02.Array类型
创建数组的基本方式有两种
a.var colors = new Array();
b.var colors = [];
备注:数组最多可以包含4294967295个项,这几乎已经能够满足任何编程需求了。如果想添加的项数超过这个上限值,就会发生异常。
03.数组一些方法:
a.(Array.isArray())
b.toLocaleString()\toString()\valueOf()
c.栈方法(push 和 pop):栈是一种(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。
d.队列方法(shift):对立数据结构的访问规则FIFO(First-In-First-Out,先进先出)。
e.操作方法:
concat()方法:基于当前数组中的所有项创建一个新数组。
slice()方法:它能基于当前数组中的一或多个项创建一个新数组
indexOf()和lastIndexOf()方法:这两个方法都接收两个参数,要查找的项和表示查找起点位置的索引
reduce和reduceRight:这个函数返回的任何值都会作为第一个参数自动传给下一个项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
04.Date类型
a.日期格式化方法
*toDateString:特定于实现格式显示星期、月、日和年
*toTimeString:以特定于实现的格式显示时分秒和时区
*toLocalDateString:以特定于实现的格式显示时分秒和年
*toLocaleTimeString:以特定于实现的格式显示时分秒
*toUTCString:以特定于是心啊的格式完整的UTC日期
05.RegExp类型
var expression = /pattern/flags
模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。每个正则表达式都可以带有一伙多个标志(flags),用以标明正则表达式的行为:g——表示全局模式;i——表示不区分大小写(case-insensitive)模式;m——表示多行(multiline)模式
06.Function类型
a.有意思的根源,则在于函数实际上是对象。每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。函数通常是使用函数声明语法定义的。
b.函数声明与函数表达式:解析器在想执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用;至于函数表达式,则必须等到解析器执行到它所在代码行,才会真正被解释执行。
c.函数内部属性:arguments、和this、callee的属性。备注:callee属性是一个指针,指向拥有这个arguments对象的函数。
函数的名字仅仅是一个包含指针的变量而已。因此,即使是在不同的环境中执行,全局的sayColor函数与o.sayColor()执行仍然是同一个函数。口诀:this谁调用就是谁的this.
d.caller当前谁调用的的对象
e.call、apply和bind
f.基本包装类型:Boolean、Number和String.
备注:Boolean、Number、String是一个对象。
g.String类型
g1.charAt()和charCodeAt():方位字符串中特定字符的方法。
g2.concat():用于将一或多个字符串拼接起来,返回拼接得到的新字符串
g3.indexOf和lastIndexOf():有两个可以从字符串中查找子字符串的方法
g4.trim()方法:删除前置和后缀的所有空格。
g5.toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase()
g6.RegExp():String类型定义了几个用于在字符串中匹配模式的方法
g7.localeCompare():比较两个字符串,并返回。
g8.fromCharCode()接收一伙多个字符串编码,然后将他们转换成一个字符串。
07.单体内置对象
a.Global对象
温馨提示:能够解释代码字符串的能力非常强大,但也非常危险。因此在使用eval()时必须几位谨慎,特别是在用他执行用户输入数据的情况下。否则,可能会有恶意用户输入威胁你的站点或应用程序安全的代码。(所谓的代码注入)
b.window对象
JavaScript中的window对象除了扮演ECMAScript规定Global对象的角色外,还承担了很多别的任务。
c.Math对象
c1.Math对象的属性
c2.min()和max()方法
c3.random()方法
08.小结
*引用类型与传统面向对象程序设计中的类相似,但实现不同
*Object是一个基础类型,其他所有类型都从Object继承了基本行为
*Array类型是一组值的有序列表,同时还提供了操作和转换这些值的功能
*Date类型提供了有关日期和时间的信息,包括当前日期和时间以及相关的计算功能
*RegExp类型是ECMAScript支持正则表达式的一个接口,提供了最基本的和一些高级的正则表达式功能。
*函数实际上Function类型的实例,因此函数也是对象;而这一点正式JavaScript最有特色的地方。由于函数是对象,所以函数也拥有方法,可以用来增强其行为。