javascript原型模式
在原型變成思想中,類並不是必須的,物件並不一定要從類中建立,一個物件通過克隆另一個物件而得到。
1、原型模式實現的關鍵是語言本身提供了clone方法,es5提供了Object.creat方法。如下:
var Plane=function(){
this.blood=1000;
this.attackLevel=1;
this.defenseLebel=1;
}
varplane =new Plane();
plane.blood=500;
plane.attackLevel=10;
plane.defenseLebel=7;
var clonePlane = Object.create(plane);
console.log(clonePlane);
輸出:
Plane {}
PlaneattackLevel:10
blood:500
defenseLebel:7
2、原型鏈
舉一個例子,
Object是Animal的原型,而Animal是Dog的原型,他們之間形成了一個原型鏈。
這個原型鏈很有用,如果我們呼叫Dog的某個方法,如果Dog沒有,他就會委託給他的原型Animal,,如果Animal也沒有這個屬性,Animal就會順著原型鏈委託給原型Object物件,這樣一來就能形成繼承的效果,看起來像是Animal是Dog的“父類”,而Object是Animal的“父類”。
所有原型程式設計一個重要特性是,當無法響應某個請求時,會把請求委託給自己的原型。
原型程式設計有以下的規則:
l 所有資料都是物件。
l 要得到一個物件,不是例項化類,而是找到一個物件作為原型並克隆它。
l 物件會記住他的原型。
l 如果物件無法響應某個請求,他會把這個請求委託給自己的原型。
3、javascript的根物件是Object.prototype,Object.prototype是一個空物件,js中遇到的所有物件都是從Object.prototype克隆而來的。
4、克隆物件的方式:
l varobj1=new Object();
l varobj2={};