码迷,mamicode.com
首页 > 编程语言 > 详细

《Javascript高级程序设计》学习记录(二)

时间:2015-11-15 17:53:39      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

《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()等等


《Javascript高级程序设计》学习记录(二)

标签:

原文地址:http://my.oschina.net/sunshinewyf/blog/530555

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!