JavaScript学习之 引用类型

引用类型是一种数据结构,也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。

1、Object类型

Object是使用最多的一种类型。创建Object实例的方式有两种:第一种是使用new操作符后跟Object构造函数,另一种方式是使用对象字面量表示法。

示例1:

var person=new Object();

person.name="homebai";

person.age=29;

示例2:

var person={

    name:"homebai",

    age=29

};

访问对象属性可以用点表示法,也可以用方括号表示法。方括号的优点是可以通过变量来访问属性。示例如下:

alert(person["name"]);

alert(person.name);

2、Array类型

除Object之外,Array是最常用的类型了。创建数组的基本方式有两种:第一种是使用Array构造函数,第二种是使用数组字面量表示法。示例如下:

示例1:

var colors=new Array();

var colors=new Array(10);

var colors=new Array("red","green","blue");

示例2:

var colors=["red","green","blue"];

var colors=[];

var colors=[1,2,3];

    2.1 转换方法

    所有对象都具有toLocaleString()、toString()、valueOf()方法。数组的toString()和valueOf()方法会返回相同的值。

   2.2  join()方法

    join()方法只接收一个参数,即用作分隔符的字符串。示例如下:

var colors=["red","green","blue"];

alert(colors.join(","));

alert(colors.join("||"));

    2.3 栈方法

    数组提供了push()、pop()两个方法。

    push() 接收参数并把它们逐个添加到数组末尾,并返加数组的长度。

    pop() 从数组末尾移除最后一项,减少数组的length值,返加移除的项。

    2.4 队列方法

    栈数据结构的访问方法是后进先出,而队列方法是先进先出。

    shift() 移除数组中的第一个项并返加该项。

    unshift() 在数组前端添加任意个项并返回数组长度。

    2.5 重排序方法

reverse() 对数组项反转排序。

sort() 调用每个数组项的toString()方法,然后比较字符串,以确定如何排序。sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。

比较函数接收两个参数,如果想第一个参数位于第二个参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应排在第二个参数之后则返回一个正数。示例如下:

function compare(value1,value2){

    if(value1<value2) return -1;

    if(value1==value2) return 0;

    if(value1>value2) return 1;

}

    2.6 操作方法

concat() 先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾。

slice() 能够基于当前数组中的一或多个项创建一个新数组。接收一或两个参数,即要返回项的起始和结束位置。

splice() 使用该方法的方式有三种:

删除--指定两个参数,要删除的第一项的位置和要删除的项数。示例:splice(2,1)

插入--至少三个参数,起始位置、要删除的项数和要插入的项。示例:splice(2,0,"red","green")

替换--三个参数,起始位置、要删除的项数和要插入的任意数量的项。示例:splice(2,2,"white","black")

3、Date类型

创建示例:var now=new Date();

在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当时日期和时间。如果想根据特定的日期和时间创建日期对象,必须传入表示该日期的毫秒数(即UTC时间1970年1月1日午夜起至该日期止经过的毫秒数)。为了简化这一计算过程,ECMAScript提供了两个方法:Date.parse()和Date.UTC()。

其中,Date.parse()方法接收一个表示日期的字符串参数,返回相应日期的毫秒数。如果传入的参数不能表示为日期,则返回NaN。

Date.UTC()方法同样也返回表示日期的毫秒数。传入的参数分别是年份、基于0的月份(0-11)、月中的哪一天(1-31)、小时数(0-23)、分钟、秒以及毫秒数。这些参数中只有年和月是必须的。

3.1 继承的方法

与其他引用类型一样,Date类型也重写了toLocaleString()、toString()、valueOf()方法;但这些方法返回的值与其他类型中的方法不同。Date类型的toLocaleString()方法会按照与浏览器设置的地区相适应的格式返回日期和时间。

3.2 日期格式化方法

Date类型还有一些专门用于将日期格式化为字符串的方法,这些方法如下:

  • toDateString()-以特定于实现的格式显示星期几、月、日和年;
  • toTimeString()-显示时、分、秒和时区;
  • toLocaleDateString()-以特定于地区的格式显示星期几、月、日和年;
  • toLocaleTimeString()-以特定于实现的格式显示时、分、秒;
  • toUTCString()-显示完整的UTC日期;

3.3 日期/时间组件方法

  • getTime()--返回表示日期的毫秒数,与valueOf()方法返回的值相同
  • setTime(毫秒)--以毫秒数设置日期,会改变整个日期
  • getFullYear()--取得4位数的年份
  • getUTCFullYear()--返回UTC日期的4位数年份
  • setFullYear(年)--设置日期的年份
  • setUTCFullYear(年)--设置UTC日期的年份
  • getMonth()--返回日期中的月份,0表示一月,11表示十二月
  • getUTCMonth()--返回UTC日期中的月份,(0-11)
  • setMonth(月)--设置日期的月份。传入的月份必须大于0,超过11则增加年份
  • setUTCMonth(月)--设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份
  • getDate()--返回日期月份中的天数(1-31)
  • getUTCDate()--返回UTC日期月份中的天数(1-31)
  • setDate(日)--设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份
  • setUTCDate(日)--设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天灵敏,则增加月份
  • getDay()--返回日期中星期的星期几(其中0表示时期日,6表示星期六)
  • getUTCDay()--返回UTC日期中星期的星期几(其中0表示星期日,6表示星期六)
  • getHours()--返回日期中的小时数(0-23)
  • getUTCHours()--返回UTC日期中的小时数(0-23)
  • setHours(时)--设置日期中的小时数。传入的值超过了23则增加月份中的天数
  • setUTCHours(时)--设置UTC日期中的小时数。传入的值超过23则增加月份中的天数
  • getMinutes()--返回日期中的分钟数(0-59)
  • getUTCMinutes()--返回UTC日期中的分钟数(0-59)
  • setMinutes(分)--设置日期中的分钟数。传入的值超过59则增加小时数
  • setUTCMinutes(分)--设置UTC日期中的分钟数。传入的值超过59则增加小时数
  • getSeconds()--返回日期中秒数(0-59)
  • getUTCSeconds()--返回UTC日期中的秒数(0-59)
  • setSeconds(秒)--设置日期中秒数。传入的值超过59会增加分钟数
  • setUTCSeconds(秒)--设置UTC日期中的秒数。传入的值超过59会增加分钟数
  • getMilliseconds()--返回日期中的毫秒数
  • getUTCMilliseconds()--返回UTC日期中的毫秒数
  • setMilliseconds(毫秒)--设置日期中的毫秒数
  • setUTCMilliseconds(毫秒)--设置UTC日期中的毫秒数
  • getTimexoneOffset()--返回本地时间与UTC时间相差分钟数。

4、RegExp类型

ECMAScript通过RegExp来实现正则表达式。示例: var expression=/patter/flags; 或 var pattern = new RegExp("[bc]at","i");

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

  • g--表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。
  • i--表示不区分大小写,即在确定匹配项时忽略模式与字符串的大小写。
  • m--表示多行模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

由于RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符进行双重转义。

4.1 RegExp实例属性

RegExp的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息:

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

4.2 RegExp实例方法

exec()--该方法接受一个参数,即应用模式的字符串,包含两个额外的属性:index和input。

test()--在模式与该参数匹配的情况下返回true,否则返回false。

toLocaleString()

toString()

4.3 RegExp 构造函数属性

RegExp.input--返回原始字符串

RegExp.leftContext--返回单词之前的字符串

RegExp.rightContext--返回单词之前的字符串

RegExp.lastMatch--返回最近一次与整个正则表达式匹配的字符串

RegExp.lastParen--返回最近一次匹配的捕获组

5、Function 类型

三种定义方法:

示例1:

function sum(num1,num2){

    return num1+num2;

}

示例2:

var sum=function(num1,num2){

    return num1+num2;

};

示例3:

var sum=new Function{"num1","num2","return num1+num2"};

5.1 函数属性和方法

length--返回函数希望接收的命名参数的个数

prototype

方法:

apply()--接收两个参数,一个是作用域,一个是arguments

call()--接怍两个参数,一个是作用域,一个是数组

6、基本包装类型


7、内置对象

内置对象有两个:Global和Math。

7.1 Global(全局) 对象

方法:

isNaN()

isFinite()

parseInt()

parseFloat()


encodeURI()--主要用于整个URI,如http://www.homebai.com/index.php,它不会对本身属于URI的特殊字符进行编码

encodeURIComponent()--主要用对URI中的某一段进行编码,例如: image value.htm,会对它发现的任何非标准字符进行编码。

使用encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了%20。而encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符。

decodeURI()--解码encodeURI()编码过的字符。

decodeURIComponent()--解码encodeURIComponent()编码的所有字符。

eval()--它只接受一个参数,即要执行的ECMAScript字符串。示例:eval("alert("hi")");

4.2 window对象

ECMAScript虽然没有指出如何直接访问Global对象,但Web浏览器都是将这个全局对象作为window对象的一部分加以实现。因此全局作用域中声明的所有变量和函数,都成为window对象的属性。示例:

var color="red";

function sayColor(){

     alert(window.color);

}

window.sayColor();


7、Math对象










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值