函数:
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语言中只有函数内部的子函数才能够读取局部变量,因此可以把闭包简单理解为定义在函数内的子函数。