javascript高级程序设计笔记(第5章 引用类型)

Posted on 2014-09-07 10:27  liguwe  阅读(166)  评论(0编辑  收藏  举报

1、Object类型

  两种方式定义:对象字面量、new

  两种方式访问:括号、点


2、Array类型

  2.1  定义方式:new Array、数组字面量

  2.2  lenght属性:可以利用它方便的想数组末尾添加元素

  2.3  检测数组

instanceof

isArray()方法

   2.4  toString()、soLocaleString()、valueOf()、join()方法

     2.5、栈方法(尾部加入或去除元素)

       push()方法:逐个添加到数组末尾,并返回修改后的数组长度

     pop()方法:返回数组的最后一项    

var colors = new Array(); // 创建一个数组
var count = colors.push("red", "green"); // 推入两项
alert(count); //2
count = colors.push("black"); // 推入另一项
alert(count); //3
var item = colors.pop(); // 取得最后一项
alert(item); //"black"
alert(colors.length); //2

 

var colors = ["red", "blue"];
colors.push("brown"); // 添加另一项
colors[3] = "black"; // 添加一项
alert(colors.length); // 4
var item = colors.pop(); // 取得最后一项
alert(item); //"black"

  2.6 队列方法(数组前端添加或移除元素)  

  unshift()方法:在数组前端添任意项并返回新数组的长度

  shift()方法:在数组前端推入任意项并返回该项

  2.7 reverse()、sort()方法

一般的排序

function compare(value1, value2) {
if (value1 < value2) {
  return 1;
} else if (value1 > value2) {
  return -1;
} else {
  return 0;
}
}
var values = [0, 1, 5, 10, 15];
values.sort(compare);
alert(values); // 15,10,5,1,0

 

    对于数值类型或者其valueOf()方法会返回数值类型的对象类型 

function compare(value1, value2){
return value2 - value1;
}

 

  2.8 concat()方法

  2.9 slice()方法:

var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow

 

  2.10 splice()方法:

     主要用途是向数组的中部插入项,splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)

 删除:可以删除任意数量的项,只需指定2 个参数:要删除的第一项的位置和要删除的项数。

 插入:可以向指定位置插入任意数量的项,只需提供3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。

 替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。

 

2.11 indexOf()和lastIndexOf()

2.12 迭代方法:

every(),filter(),forEach(),map(),some() 

一般传入三个参数:item(那一项),index,arrray(该数组)

2.13  reduce,reduceRight 

    一般传入四个参数:prev(前一个值),cur(当前值),index(项的索引值),array(数组对象)


3、Date类型

Date.parse(参数); 这里的参数表示日期的一个字符串参数,具体格式因地区而异

Date.UTC(); :传入的参数分别代表年、月,日,时、分、秒、毫秒

Date.now();

toString()与toLocaleString():这两个方法在不同的浏览器上返回的日期和时间格式各不相同

valueOf(): 返回此时间的时间戳

    日期的格式化方法和日期组件方法(具体的查看手册)


4、RegExp类型

4.1 RegExp定义方法:

  字面量:

  构造函数:(接收两个参数:一个是要匹配的字符串模式,另一个是可选的标志字符串)。注意在使用字符串模式时,必须对所有元字符进行双重转义

  两种定义方式的区别:看下面一段代码

var re = null,
i;
for (i=0; i < 10; i++){
  re = /cat/g;
  re.test("catastrophe");                 //只返回一次TRUE,第二次从从索引值为3的支付开始找……                  
}
for (i=0; i < 10; i++){
  re = new RegExp("cat", "g");
  re.test("catastrophe");                       //每次都返回TRUE,因为每次迭代都会创建一个新的RegExp实例
}

 

4.2 RegExp的实力属性:

 global:布尔值,表示是否设置了g 标志。
 ignoreCase:布尔值,表示是否设置了i 标志。
 lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0 算起。
 multiline:布尔值,表示是否设置了m 标志。
 source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。

4.3 RegExp的实例方法

exec()方法:

exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null。

返回的数组虽然是Array的实例,但包含两个额外的属性:index 和input。其中,index 表示匹配项在字符串中的位置,而input 表示应用正则表达式的字符串。

在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)。

模式中时候设置全局g的调用exec()方法的区别

test()方法:一般都只用来判断返回TRUE或false

 

toLocaleString和toString()方法:

4.4 RegExp构造函数的属性:

长属性和对应的短属性名:

注意:对这些属性的的支持各个浏览器不一样

RegExp.$1、RegExp.$2…RegExp.$9,分别用于存储第一、第二……第九个匹配的捕获组

4.5 模式的局限性


5、Function类型

 


6、基本包装类型


7、单体内置对象


8、小结

 

对象在JavaScript 中被称为引用类型的值,而且有一些内置的引用类型可以用来创建特定的对象,
现简要总结如下:
 引用类型与传统面向对象程序设计中的类相似,但实现不同;
 Object 是一个基础类型,其他所有类型都从Object 继承了基本的行为;
 Array 类型是一组值的有序列表,同时还提供了操作和转换这些值的功能;
 Date 类型提供了有关日期和时间的信息,包括当前日期和时间以及相关的计算功能;
 RegExp 类型是ECMAScript 支持正则表达式的一个接口,提供了最基本的和一些高级的正则表
达式功能。
函数实际上是Function 类型的实例,因此函数也是对象;而这一点正是JavaScript 最有特色的地
方。由于函数是对象,所以函数也拥有方法,可以用来增强其行为。
因为有了基本包装类型,所以JavaScript 中的基本类型值可以被当作对象来访问。三种基本包装类
型分别是:Boolean、Number 和String。以下是它们共同的特征:
 每个包装类型都映射到同名的基本类型;
 在读取模式下访问基本类型值时,就会创建对应的基本包装类型的一个对象,从而方便了数据
操作;
 操作基本类型值的语句一经执行完毕,就会立即销毁新创建的包装对象。

在所有代码执行之前,作用域中就已经存在两个内置对象:Global 和Math。在大多数ECMAScript
实现中都不能直接访问Global 对象;不过,Web 浏览器实现了承担该角色的window 对象。全局变
量和函数都是Global 对象的属性。Math 对象提供了很多属性和方法,用于辅助完成复杂的数学计算
任务。