假設讓classb繼承classa
讓classb的prototype(含有三個值,自定義屬性方法,constructor,__proto__
)
目標:1. classb擁有classa的屬性方法,classb可以有自己的額外屬性
2. classb的父級是a
3. class b的構造器是自己的
過程:屬性/父級/構造器
classb自己寫屬性,在classb中通過classa.call(this)//自定義屬性並使用a的屬性
classb的prototype=classa//繼承classa的__proto__
,屬性方法
classb.prototype.constructor=classb//修改構造器
自帶第二層__proto__(object)這裡擁有object通用屬性與方法
自帶的constructor構造器,實際是乙個物件,擁有prototype屬性,屬性值為
每個物件都具有乙個名為__proto__的屬性;
每個建構函式(建構函式標準為大寫開頭,如function(),object()等等js中自帶的建構函式,以及自己建立的)都具有乙個名為prototype的方法(注意:既然是方法,那麼就是乙個物件(js中函式同樣是物件),所以prototype同樣帶有__proto__屬性);
每個物件的__proto__屬性指向自身建構函式的prototype;
prototype是建構函式獨有的屬性;
物件的__proto__屬性通常與其建構函式的prototype屬性相互對應;
所有建構函式的的prototype方法的__都指向__object.prototype(除了…object.prototype自身)
constructor指明了建構函式
自帶屬性
__proto__
(指向constructor)
自定義的屬性方法
__proto__
區別在於 物件有屬性方法,__proto__
類有屬性方法,constructor,__proto__
JS物件繼承與原型鏈
在 class based 的物件導向的世界裡,要出現物件,必須先有類。類之間可以繼承,類再使用 new 操作建立出實體,父子物件之間的繼承體現在父類和子類上。你不能說 物件 a 繼承了物件 b,只能說 class a 繼承了 class b,然後他們各自有乙個例項a b。js中實現的是原型繼承。在...
js原型物件 原型鏈 繼承
原型物件 只要建立了乙個新函式,就會根據一些特定的規則為該函式建立乙個prototype屬性,這個屬性指向的物件就是該新函式的原型物件。預設情況下,所有原型物件都會自動獲取乙個constructor屬性,這個屬性是乙個指向prototype屬性所在函式的指標 原型物件的優點 可以讓所有物件例項共享它...
JS原型繼承與原型鏈(二)
建構函式的繼承 function animal function cat name,color 一 建構函式繫結 function cat name,color var cat1 new cat 大毛 黃色 alert cat1.species 動物 二 prototype模式 第二種方法更常見,使...