标签:
《Javascript高级程序设计》学习记录(二)
引用对象,由上一次的总结可以得出,基本类型有Number,Boolean,Undefined,String,Null,而引用类型也有许多种,现在介绍一些引用类型我个人觉得比较混淆的地方
(一)Object类型
(1)创建对象的方法有如下两种:
1:构造函数法:var person = new Person();
在这里,虽然构造函数也是一种函数,但是我们在命名的时候,一般都是将构造函数的首字母大写,以和其他普通函数保持区别
2:对象字面量:如下所示:
var person = {
name = ‘sunshine‘,
age = ‘21‘
}
(2)在访问对象的属性和方法的时候,有点表示法和方括号表示法,两者没有区别,唯一一点就是方括号表示法可以使用变量来访问属性,例如:
Var index = ‘age’;
Alert(person[index];
这在点表示法中是行不通的,其次,如果对象属性名中包含空格,也必须使用方括号表示法
(二)Array类型
(1)创建array类型也有两种方式
1:构造函数法:eg var color = new Array();
2:数组字面量表示法: var color = [‘red’,‘purple’,’black’];
(2)数组的检测
仅仅对数组执行instanceof操作的检测,并不能严格检测出数组,因为一旦页面中包含了多个框架,那么就存在两个或者以上的全局执行环境,这样就会有两个以上不同版本的Array()构造函数,可能会引发一系列问题
所以可以采用ES5中的array.isArray()方法进行检测
Eg: if(Array.isArray()){
}
(3)Array引用类型的一系类函数:push(),pop(),shift(),unshift(),sort(),reverse(),concat(),slice(),splice(),indexOf(),every(),some(),map(),filter(),forEach(),reduce(),reduceRight()
(三)Date对象
创建一个日期对象,使用如下方法:
Var now = new Date();
当不传入参数的时候,默认获得当前日期和时间,如果想根据特定的日期和时间创建对象,必须传入表示该日期的毫秒数,Es中提供了两个方法,一个是Date.parse(),另外一个是Date.UTC();
要注意date对象中的getMonth()函数的下标是按照数组的下标来获取相应的月份的,比如获取3月,则应该是getMonth(2);
(四)RegExp类型
创建方法:(1)字面量形式创建:eg:var patter = /at/g;
(2)构造函数方法:eg: var patter = new RegExp(“/at/g”);
(五)Function类型
(1)使用不带圆括号的函数名是访问函数指针,而非调用函数
(2)Js中的函数没有重载
(3)函数的内部属性:在函数内部,有两个特殊的对象,arguments和this,其中arguments的主要用途是保存函数参数,且arguments对象有一个callee的属性,指向拥有这个arguments对象的函数,其使用例子为:
Function factorial(num){
if(num<=1){
Return 1;
}else{
Return num*arguments.caree(num-1);
}
}
(2)ES5也规定了一个函数对象caller,这个属性中保存的调用当前函数的函数的引用,除了在opera的早期版本中不支持外,其他都支持
eg:function puter(){
inner();
}
function inner(){
alert(arguments.callee.caller);
}
outer;
(3)apply()和call()
这两个方法的用途都是在特定的作用域中调用函数,实际上就是自己设置this的指向
区别:apply()方法接收两个参数,一个是在其中运行函数的作用域,另外是参数数组
eg:function sum(num1,num2){
return num1+num;
}
function callsum(num1,num2){
return sum.apply(this,[num1,num2]);
//或者是return sum.apply(this,arguments);
}
call()方法和apply()的区别就是接收参数的方式不同,第一个参数和apply()是一样的,但是传递给函数的参数必须逐个列举出来,所以上面的应该改为:
return sum.call(this,num1,num2);
(六)String类型
(1)该类型的构造方式有:1:var str = "hello world";或者 var str = new String(‘hello world‘);
(2)string类型的方法:charAt(),charCodeAt(),concat(),slice(),substr(),substring(),indexOf(),lastIndexOf(),trim(),toLowerCase()等等
标签:
原文地址:http://my.oschina.net/sunshinewyf/blog/530555