您的位置:首页 > Web前端 > JavaScript

Javascript学习日志 (三) 引用类型

2012-12-14 12:13 218 查看

1 Object类型

1.1 创建实例的方式:

new方式:

var obj = new Object();

对象字面量方式:

var obj = {

[code] name : "zich",

age : 26   // 最后一个不能加逗号

};

[/code]
为对象增加属性或方法:

obj.number = 10;

obj.study = function() {};

访问对象属性的方式:

点访问:obj.name;

方括号访问:obj[“name”],此时必须以字符串形式填入,此方法可以通过变量来访问属性(var property = “name”; obj[property];).

2 Array类型

javascript中的数组与C/Java中的不一样,javascript中的Array存储的每一项不一定都是同一类型的值,可以同时存在String, Number, Null, 甚至是Object。

2.1 创建一个Array方式

var arr1 = new Array(); // 创建了一个空数组

var arr2 = new Array(n); // 创建了一个含有n个元素的数组

还可以指定具体项的内容来创建:

var arr3 = new Array(“Tom”, “Jim”, “Hob”); // 创建了含有三个元素分别为Tom, Jim, Hob的数组

使用字面量方式创建:

var arr4 = [“Tom”, “Jim”, “Hob”]; // 与arr3的创建效果一样

var arr5 = []; // 结果类似于arr1

2.2 Array的属性

length:此属性值为array的长度,并且可以通过改变length的值来增加和减少数组的长度。

2.3 Array方法

isArray(value):检查value是否为一数组对象;

toString():返回由数组中各元素的字符串形式以逗号分隔而拼接起来的字符串(如:arr3.toString;—> “Tom,Jim,Hob”);

valueOf():返回数组本身;

toLocalString():类似于toString();

join():接收一个参数,此参数为连接符号,将数组中的元素转换成字符串之后使用该连接符连接起来,返回连接后的字符串;

push():任意个参数,将这些参数添加到数组末尾,返回修改后数组的长度(LIFO);

pop():从数组末尾移除一项,返回移除的项(LIFO);

shift():移除数组的第一个项并返回该项,和push()一起用可实现FIFO队列操作;

unshift():在数组前面插入任意个项,与pop()一起可以实现前端插入和后端删除操作;

reverse():逆排序;

sort():转换成字符串之后,按照字典序进行排序,参数可以是比较函数,决定排序规则;

concat():没参数时只执行简单的复制副本,一个或多个数组时,会将这些数组中的每项添加到结果数组中,参数为非数组时只简单的将值添加到结果数组的结尾;

slice():一个或多个,作用是提取数组元素,如果一个参数,则提取var1-length之间的元素,两个参数时提取var1-var2之间的元素,但不包括var2,返回提取后元素构成的数组;

splice():删除/插入/替换操作,具体视参数内容而定

删除:两个参数,var1表示要删除的第一项的位置,var2表示要删除的个数;

插入:任意个参数,var1插入的位置,var2=0,其他参数表示即将被插入的项;

替换:任意个参数,var1替换开始的位置,var2要替换的个数,其他参数表示要替换的具体项,另外这个var2与后面要的其他参数个数不一定要一样。

indexOf():从头开始找,一个参数时,表示从var1索引处开始找,两个参数时表示在var1-var2之间查找,没找到返回-1;

lastIndexOf():从结尾开始查找,其他类似indexOf();

数组迭代方法,每个方法接收两个参数,第一个参数为一个函数f,此函数接收三个参数,分别为:数组项的值,该项在数组中的索引,和数组对象本身:

every():对数组每一项执行f函数,如果f都返回true,则返回true,否则false;

filter():对数组每一项执行f函数,返回一个数组,该数组由执行f函数返回true的元素组成;

forEach():对数组每一项执行f函数,无返回值;

map():对数组每一项执行f函数,返回每次函数f调用返回的结果组成的数组;

some():对数组每一项执行f函数,如果有一项返回true,则返回true,否则false,有点像every();

归并方法:

reduce():左 —> 右;

reduceRight:右—> 左。

3 Date类型

var dt = new Date();

美国浏览器格式:

“月/日/年”, 12/12/2012;

“英文月明 日,年”,December 12,2012;

“英文星期几 英文月名 日 年 时:分:秒 时区”;

ISO 8601扩展格式:YYYY-MM-DDTHH:mm:ss:sssZ;

方法:

parse():将合法日期格式转换成ms数,不合法的格式返回NaN,用法:Date.parse(“December 12,2012”);

UTC():参数分别为 年,月(0-11),天(1-31),小时数(0-23),分钟,秒以及毫秒,年和月两个参数为必须,其他可选;

4 RegExp类型

var expr = /pattern/flags;

4.1 flags:

g:全局模式,应用于所有字符串,而不是发现第一个匹配时立即停止;

i:忽略大小写;

m:多行模式,即查找多行;

4.2 需要转义的元字符:

( [ { \ ^ $ | ) ? * + . ] }

4.3 RegExp实例属性

global:布尔值,是否设置了g标志;

ignoreCase:布尔值,是否设置了i标志;

lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0开始;

multiline:布尔值,是否设置了m标志;

source:正则表达式的字符串表示。

4.4 RegExp实例方法

exec():参数,应用模式字符串,返回包含第一个匹配项信息的数组,无匹配返回null,没有设置g时,始终返回第一个匹配项,设置了,每次调用都会继续查找新的匹配项;

test():检查文本是否与pattern匹配;

4.5 构造函数属性

input/$_:最近一次要匹配的字符串;

lastMatch/$&:最近一次匹配的项;

lastParen/$+:最近一次匹配的捕获组,以上三个opera未实现;

leftContxt/$ ':input字符串中lastMatch之前的文本;

multiline/$*:布尔值,是否所有表达式都是用多行模式;

rightContext/$’:Input字符串中的lastMatch之后的文本;

5 Function类型

5.1 函数声明:

function f() {},javascript会将其提升到顶部;

5.2 函数表达式:

var f = function() {};

5.3 函数内部属性

arguments,保存了传进来的所有参数,可通过下标方位arguments[0], …,arguments拥有callee属性,callee为一指针,它指向拥有该arguments对象的函数,所以f的arguments.callee == f;

this:当前对象;

函数对象的属性:caller,指向调用该函数的函数,function ff() { f(); }, function f() { alert(arguments.callee.caller); //输出为ff函数体的代码 }

6 基本包装类型

针对基本类型而产生的包装类型原理:后台创建一个对应的基本包装类型的对象,从而使其能够拥有属性或方法来操作这些数据,创建之后在实例上调用指定方法,完成调用之后立即销毁该实例;

字符串操作方法:

slice(start[, end]):截取start-end之间的字符,不含end;

substring(start[, end]):取子串;

substr(start[, num]):去子串,但第二个参数表示的是要取的个数;

indexOf(substr):包含子串的索引,从头开始搜索;

lastIndexOf(substr):包含子串的索引,从后开始搜索;

trim():去掉字符串前后的空格,返回之后的字符串副本,本体不变;

toLowerCase(), toLocaleLowerCase():转换成小写,后者可根据当地环境而转换,推荐使用;

toUpperCase(), toLocaleUpperCase():转换成大写,同上;

match():字符串模式匹配,用法:text.match(pattern);

localeCompare():字符串比较,返回 >0, =0, <0;

fromCharCode();参数为:字符编码,作用是将参数中的所有字符编码转换成字符再组合成字符串返回;

7 Global, Window对象

8 Math对象

Math.ceil():向上舍;

Math.floor():向下舍;

Math.round():标准舍入;

Math.random();产生随机数,val = floor(Math.random() * num + lowVal);,产生最小为lowVal个数为num之间的随机一个数;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: