JS原型繼承與物件機制

2021-09-02 05:12:56 字數 1091 閱讀 8913

假設讓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模式 第二種方法更常見,使...