JavaScript函数与对象的关系和创建方法
1、函数的定义(创建)
方法1:函数声明(使用function关键字)
<script>
function fdemo1(param){
alert("I'm fdemo1");
}
</script>
方法2:表达式
这种方法是将匿名函数绑定到一个变量上,使用方法和方法1定义的函数一样,可以完成函数递归调用
<script>
var fdemo2 = function(param){
alert("I'm fdemo2");
}
</script>
方法3:函数构造器
函数Function()可以有任意多个参数,前面n-1个是被构造函数的参数,最后一个是被构造函数的函数体
<script>
var fdemo3 = new Function('param',"alert('I'm fdemo2');");
</script>
1、js对象(类似于java的类)的定义
js是面向对象语言,但没有直接对类或者对象的声明和定义,但js的函数就是最直接的对象,有属性,有方法
一个简单的构建一个对象的构造函数如下
function Demo(param){
var property1 = "属性1";//函数中定义的局部变量
this.property2 = "属性2";//隶属于Demo这个对象(或者理解为类)的成员变量
this.fdemo = function(){//隶属于Demo这个对象(或者理解为类)的成员函数
alert(this.property2);
}
}
除了像上面那样直接在原始构造函数里定义属性和方法之外,js还支持在外部为对象添加属性和方法
添加静态方法:
//同java静态方法一样,这里的静态方法只能通过类名来直接访问
Demo.staticfunction = function(param){
alert("我是类Demo的静态方法");
}
添加原型方法(成员方法):
//prototype原型是每个js函数一定义就具有的成员变量,它相当于这个类的本身的一个对象
//直接给prototype添加成员方法就相当于是给java类中增加普通的成员方法
Demo.prototype.prototypeFunction = function(param){
alert("I'm prototypeFunction, property2 = "+property2);
}
有两种方式访问,一种是
Demo.prototype.prototypeFunction(param);
另一种:
var demo4 = new Demo("demo4");
demo4.prototypeFunction("param1");
添加静态属性:
Demo.staticProperty = 20;
添加成员属性:
Demo.prototype.property2 = "property2";
所有静态和成员的属性和方法访问方式都参考java的访问方式,只不过js多了一种直接通过Demo.prototype这个类似于静态成员变量的对象来直接访问