一、Object类型

1.创建Object实例

//第一种:new操作符后跟Object构造函数
var person = new Object();
person.name = "Nicholas";
//第二种:对象字面量表示法
var person{
    name : "Nicholas",
    age: 29
}

2.访问对象属性

//点表示法
alert(person.name);
//方括号语法(可以通过变量来访问属性,属性名中包含会导致错误的字符时也可以使用)
alert(person[name]);
alert(person[first name]);

二、Array类型

1.创建数组

//第一种:Array构造函数
var values = new Array();
var colors = new Array("red","blue","green");
//第二种:数组字面量表示法
var values = [];
var colors = ["red","blue","green"];

2.栈和队列

  • push()–接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
  • pop()–从数组末尾移除最后一项,减少数组length值,并返回移除的项
  • shift()–移除数组的第一个项,减少数组length值,并返回移除的项
  • unshift()–在数组前端添加任意个项并返回新数组的长度

3.排序方法

  • reverse()–反转数组项的顺序
  • sort()–按升序排列数组(根据字符串的Unicode码点排序),可以接收一个比较函数作为参数

4.操作方法

  • concat()–创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,并返回新构建的数组
  • slice()–一个参数时,返回从该参数指定位置开始到当前数组末尾的所有项;两个参数时,返回起始位置和结束位置之间的项(不包括结束位置),该方法不影响原数组
  • splice()–删除(两个参数,要删除的第一项的位置、要删除的项数);插入(三个参数,起始位置、0、要插入的项);替换(三个参数,起始位置、要删除的项数、插入任意数量的项)

5.位置方法
–两个方法都接收两个参数:要查找的项、查找起点位置的索引(可选),返回要查找的项在数组中的位置,没找到则返回-1

  • indexOf()–从数组开头向后查找
  • lastIndexOf()–从数组末尾向前查找

6.迭代方法
–接收两个参数:要在每一项上运行的函数、运行该函数的作用域对象(可选)
传入的函数接收三个参数:数组项的值、该项在数组中的位置、数组对象本身

  • every()–对数组中的每一项运行给定函数,如果每一项都返回true,则返回true
  • filter()–对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
  • forEath()–对数组中的每一项运行给定函数,没有返回值
  • map()–对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
  • some()–对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
    return (item > 2);
})   //[3,4,5,4,3]
var mapResult = numbers.map(function(item,index,array){
    return item * 2;
})   //[2,4,6,8,10,8,6,4,2]

7.缩小方法
–这两个方法会迭代数组的所有项然后构建一个最终返回的值,接收两个参数:在每一项上调用的函数、作为缩小基础的初始值(可选)
传入的函数接收四个参数:前一个值、当前值、该项在数组中的位置、数组对象本身

  • reduce()–从数组第一项开始遍历整个数组
  • reduceRight()–从数组最后一项开始遍历整个数组
//求数组中所有值之和
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
    return prev + cur;
})   //15

8.格式化

  • toFixed()–安照指定的小数位数返回数值的字符串形式
  • toExponential()–返回以指数表示法表示的数值的字符串形式,参数指定输出结果中的小数位数
  • toPrecision()–可能会返回固定大小的格式,也可能返回指数格式,参数为位数表示
var num = 100;
alert(num.toFixed(2));  //"100.00"
alert(num.toExponential(1));  //"1.0e+2"
var num1 = 99;
alert(num.toPrecision(1));  //"1e+2"
alert(num.toPrecision(1));  //"99.0"

三、Data类型

var now = new Date(); //不传参的情况下,新创建的对象自动获得当前日期和时间
var someDate = new Date("May 25,2004"); //后台自动调用Data.pares()

四、RegExp类型

见正则表达式学习篇

五、Functon类型

1.定义函数

  • 函数声明提升:解析器会率先读取函数声明,并使其在执行任何代码之前可用;而函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行
  • 要访问函数的指针而不执行函数的话,必须去掉函数名后面的那对圆括号
//函数声明语法
function sum (num1, num2){
    return num1 + num2;
}
//函数表达式(匿名函数)
var sum = function(num1,num2){
    return num1 + num2;
}; //注意函数末尾的分号

2.函数内部属性

  • this:函数据以执行的环境对象
  • arguments:类数组对象,包含着传入函数中的所有参数
  • callee:该属性是一个指针,指向这个拥有arguments对象的函数
//消除阶乘函数的紧密耦合问题
function factorial(num){
    if(num <= 1){ return 1; }
    else{
        return num * arguments.callee(num-1);
        // return num * factorial(num-1);
    }
}
  • caller:该属性中保存着调用当前函数的引用
function outer(){ inner(); }
function inner(){ alert(inner.caller); }
outer();  //弹出outer函数的源代码
  • length;表示函数希望接收的命名参数的个数
  • apply()和call():这两个方法的用途都是在特定的作用域中调用函数,实际等于设置函数体内this对象的值。两个方法的作用相同,区别仅在于接收参数的方式不同。
  • bind():会创建一个函数的实例,其this值会被绑定到传给bind()函数的值
window.color = "red";
var o = { color: "blue" };
function sayColor(){
    alert(this.color);
}
sayColor.call(this);  //red
sayColor.call(o);  //blue

var objectSayColor = sayColor.bind(o);
objectSayColor();   //blue

六、基本包装类型类型

1.Boolean类型
2.Number类型
3.String类型

七、单体内置对象

1.Global对象
2.Math对象