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");