javascript物件導向繼承簡單介紹

antzone發表於2017-03-13

雖然是一門物件導向的語言,但是js和c#或者java這樣的語言又有所不同,後兩者是基於類的物件導向,而前者是基於原型的,下面就通過一個例項簡單的介紹一下javascript繼承。

[JavaScript] 純文字檢視 複製程式碼
var web=function(){
  this.webName="螞蟻部落";
  this.webAddress="青島市南區";
}
web.prototype.age=10;
var webObj=new web();
console.log(webObj.age)

實際上prototype所指向原型物件實際上一個特殊的物件例項,此物件例項可以被所有的web的物件例項所共享,所以上面的程式碼輸出值為10。下面再來看一段程式碼:

[JavaScript] 純文字檢視 複製程式碼
var web=function(){
  this.webName="螞蟻部落";
  this.webAddress="青島市南區";
}
web.prototype.age=10;
var newWeb=function(){this.webName="新螞蟻部落"}
newWeb.prototype=new web();
var newWebObj=new newWeb();
console.log(newWebObj.webName);
console.log(newWebObj.webAddress);
console.log(newWebObj.age);

以上程式碼首先宣告一個web函式,此函式通過prototype原型繼承了age屬性,然後用宣告瞭一個新聞的函式newWeb,然後將此新函式的原型物件設定為web函式的例項,於是它就繼承了web的例項的所有內容。這裡特別注意的是,console.log(newWebObj.webName)的輸出值是"新螞蟻部落",而非是"螞蟻部落",這是因為物件本身定義的優先順序要高於繼承而來的。

相關文章