函数:

   javascript采用“面向对象”编程,所有编程都是基于对象,大到网页文档、窗口、屏幕,小道一个变量,都是对象。
    函数是有返回值的对象或对象方法。常见的函数有构造函数(如用Array()构造一个数组)、全局函数(即全局对象中的方法)和自定义函数等。
   无名函数:var a = function ( ){ alert('hello word'; )}     //使用一个变量指向该无名函数
   无名函数需要在调用之前就定义好,而有名函数则可以在调用之后定义。


1. 构造函数:

   1)与类同名
   2)在实例化(new的时候)自动调用,用于初始化数据
   3)没有返回值

2.关键字:this

   1)用在对象中,所以类需要实例化成对象后,才可以用this来表示自身的这个对象(即所谓的‘引用’)
   2)常常在构造函数中用this为对象属性赋值

3.11个内置(即已经定义好的)对象:

   1)Array, Boolean, Date, Function, Global, Math, Number, Object, ReExp, Error, String ;
         例 var myarr = new Array( 5 ); 
              "hello word".length; //注:数字和字符串可以直接当做对象处理,无需再创建对象,即可直接调对象方法。

4.创建自己的对象

    1)先定义构造函数(没有定义类,直接来个构造函数,真奇怪~):
           使用function 定义,并且用this 关键字来赋值。
           function pasta( a1, a2, a3 ){  
                        this.a1 =a1; this.a2=a2; this.a3 = a3;
            }
    2)用new运算符,调用这个构造函数,创建对象实例:
           mypasta = new pasta( 'aaa', 'bbb', 'ccc' );

5. 为对象添加属性和方法:

    1)添加属性 b1 并赋值:
              pasta.b1 = "ddd"; //注: 这样添加的属性只在当前实例化的对象中存在,其他new出的类中不存在。
    2)包含方法: 需要在构造函数中定义:
            在1)中的构造函数中添加:
             function pasta( a1, a2, a3 ){  
                        this.a1 =a1; this.a2=a2; this.a3 = a3;
                        this.testFunc = testFunc ; // 注意,这不是对函数的调用,而是对函数的引用,故方法名后没有小括号。
            }
            并定义该函数 function testFunc( ){  //do someting;  }
          使用prototype :
            pasta.prototype.testFunc = testFunc; //注意,这样添加的方法,效果和上面在构造函数里添加是一样的,在实例化后的其他对象里也可是使用。  

6.闭包

     闭包就是能够读取其他函数内部变量的函数。由于在js语言中只有函数内部的子函数才能够读取局部变量,因此可以把闭包简单理解为定义在函数内的子函数。