建立物件及繼承

2021-07-03 01:12:48 字數 2196 閱讀 7213

原型模式:使用建構函式的prototype屬性制定那些應該共享的屬性和方法。

組合使用建構函式模式和原型模式:使用建構函式定義例項屬性,使用原型定義共享的屬性和方法。

function person(name,age,job)

person.prototype =

}person1 = new person("aa",18,"student");

person2 = new person("bb",68,"teacher");

person1.friends.push("angel");

alert(person1.friends);//"jay","elva","britney"

alert(person2.friends);//"jay","elva","britney","angel"

alert(person1.friends === person2.friends);//false,不同陣列

alert(person1.sayname());//aa

alert(person2.sayname());//bb

alert(person1.sayname() === person2.sayname());//true,同一函式

乙個物件的原型是它的建構函式的prototype屬性的值。所有函式都有乙個prototype屬性,當乙個函式被定義的時候,prototype屬性會被自動建立和初始化。prototype屬性的初始值是乙個物件,而這個物件只帶乙個屬性,而這個屬性名為constructor,即建構函式。在prototype物件中,還可以為其新增其他的屬性。給這個原型物件新增的任何屬性,都會成為被建構函式所初始化的物件的屬性。

new乙個建構函式 –建立空物件 –設定物件的原型prototype

–prototype的屬性自動建立並初始化 –初始化空物件的屬性

思路:使用原型鏈實現對原型屬性和方法的繼承,通過借用建構函式來實現例項屬性的繼承。

好處:既通過在原型上定義方法實現函式復用,又保證每個例項都有它自己的屬性。

function supertype(name)

supertype.prototype.sayname = function();

function subtype(name,age)

//繼承方法

subtype.prototype = new supertype();

subtype.prototype.constructor = subtype;

subtype.prototype.sayage = function();

var v1 = new subtype("jay",19);

v1.colors.push("black");

alert(v1.colors);//"red","yellow","black"

v1.sayage();//19

v1.sayname();//"jay"

var v2 = new subtype("elva",44);

alert(v2.colors);//"red","yellow"

v2.sayage();//44

v2.sayname();//elva

組合繼承:存在的問題:需要呼叫兩次福型別建構函式,對此是建立子型別原型的時候,第二次是在子型別的建構函式內部。

思路:不必為了為了制定子型別的原型而呼叫父型別的建構函式,我們需要的只是父型別原型的乙個副本而已。

方法:通過建構函式繼承屬性,通過原型鏈混成形式來繼承方法。

基本模式:

function inheritprototype(subtype,supertype)

function supertype(name)

supertype.prototype.sayname = function();

function subtype(name,age)

inheritprototype(subtype,supertype);//繼承原型

subtype.prototype.sayage = function();

採用寄生組合式繼承,高效率,只呼叫一次supertype建構函式。因此為最佳繼承方式。

物件導向 建立物件 原型鏈 繼承

字面量建立物件 使用json形式建立物件,適用於建立單個物件.json js物件表示法,由鍵值對組成,每乙個鍵值對之間使用冒號連線,每一對鍵值對之間使用逗號隔開.var obj console.log obj console.log typeof obj object console.log obj...

lua物件導向(繼承及多繼承)

還是個人感覺,lua輕量簡潔的語法,正式在於表這種類似於物件的使用,表 t 不使用 funtion t.add self,x self.a self.a x 結束t.add 5 t 使用 函式t add x self.a self.a x 結束t 新增 5 帳戶 父類 函式account new o...

建立物件和繼承的幾種方式及區別(1)

物件導向都有類的概念,通過類可以建立任意多個具有相同屬性和方法的物件。每個物件都是基於乙個引用型別建立的。ps 閱讀js高階程式教程第六章筆記 1 物件 建立 new object 物件字面量 var person newobject person.name qwe person.sayname f...