1. 程式人生 > >Js面向物件程式設計——建立物件動態原型模式

Js面向物件程式設計——建立物件動態原型模式

建立物件動態原型模式

動態原型模式

  • 有其他OO語言經驗的開發人員在看到獨立的建構函式和原型時,很可能會感到非常困惑。動態原型模式正式時致力於解決這個問題的一個方案,它把所有資訊都封裝在了建構函式中,而通過在建構函式中初始化原型,又保持了同時使用建構函式和原型的優點。換句話說,可以通過檢查某個應該存在的方法是否有效,來決定是否需要初始化原型。
function Person(name,age,job){
	//屬性
	this.name=name;
	this.age=age;
	this.job=job;
	//方法
	if(typeof this.sayName !="function"){
		Person.prototype.sayName=function(){
			alert(this.name);
		};
	}

}

var   friend=new Person("Nicholas",29,"Software Engineer");
friend.sayName();
  • 注意建構函式程式碼中加粗的部分。這裡只在sayName()方法不存在的情況下,才會將它新增到原型中。這段程式碼只會在初次呼叫建構函式時才會執行。此後,原型已經完成初始化,不需要在做什麼修改了。不過要記住,這裡對原型所做的修改,能夠立即在所有例項中得到反映。因此,這種方法確實可以說非常完美。其中,if語句檢查的可以時初始化之後應該存在的任何屬性或方法——不必用一大堆if語句檢查每個屬性和每個方法;只要檢查其中一個即可。對於採用這種模式建立的物件,還可以使用instanceof操作符確定它的型別。
  • 使用動態原型模式時,不能使用物件字面量重寫原型。前面已經解釋過了,如果在已經建立了例項的情況下重寫原型,那麼就會切斷現有例項與新原型之間的聯絡。
  • 參考了javascript高階程式設計