原型模式:使用建構函式的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...