prototype
定义和用法
prototype 属性使您有能力向对象添加属性和方法。
语法
object.prototype = {
函数名 : function(){}
}
object.prototype.name=value
javaScript的中类和对象
定义类
例1: //第一种定义方式 var people = function(name){ this.name = name; this.say = function(msg){ alert(this.name + " say : " +msg); } } //第二种定义方式 function people(name) { this.name = name; this.init = function(msg){ alert(this.name + " say : " +msg);; } } //调用 var people = new people("I"); people.init("hello");//输出:I say hello
//定义静态方法,接例1 people.says = function(msg){ alert(this.name + " say : " +msg); } people.aa = "aa"; //调用 people.inits("hellos");//I say Hellos alert(people.aa);//aa //这种定义方式无法使用map的调用方式,不懂
定义对象,调用时使用
对象.方法
或者和java
调用map的方式一样对象['方法名'](args)
例2: //定义对象 var people = { run : function(){ alert("I can run"); } }; //调用 people.run();//输出 I can run people['run']();//同上
- 以上两种方式不能同时使用
Javascript的方法可以分为三类
- 类方法,如例1
- 对象方法,如例2
原型方法,
prototype
例3: //定义类 var people = function(name){ this.name = name; } //原型方法 people.prototype = { introduceChinese : function(){ alert(this.people +"的名字是"+this.name); } people; }; //测试 var p1=new people("Windking"); p1.people = '谁'; p1.IntroduceChinese();
总结:
- javaScript创建对象就是定义函数
javaScript对象定义方法和属性有三种方式
- 在函数内部定义方法和属性,类似java的定义,如例1
- 使用函数名.prototype定义方法和属性,例3
- 使用对象定义方法和属性
使用prototype定义属性时,要放在定义方法的后面,不然属性会是
undefined
- 使用javascript定义属性,不像java那么严谨,在实例经对象后,也可以定义属性
- 使用prototype和函数内部定义方法和属性,其作用是一样的,都需要实例化函数后才可使用
- 直接使用函数名定义方法和属性,类似java的静态该当和变量,如:
function scriptBean(){}
//定义方法
scriptBean.sayHello = function(msg){
console.log(this.name + " say : " +msg);
}
//定义属性
scriptBean.name = "scriptBean";
//调用
scriptBean.sayHello("hello");