原型模式與原型鏈(js學習)

2021-07-09 13:27:54 字數 1739 閱讀 3553

物件的原型(prototype):指向另乙個物件,本物件的屬性繼承於他的原型物件。

原型物件

原型模式

我們建立的每乙個函式都有乙個prototype(原型)屬性,這個屬性是乙個指標,指向乙個物件。這個物件就是通過呼叫建構函式而建立的那個物件例項的原型物件。使用原型物件,就不必在建構函式中定義物件例項的資訊,而是可以將這些資訊直接新增到原型物件中。
function

如圖,我們建立的person函式有乙個prototype屬性,該屬性指向了person函式的原型物件,原型物件裡有乙個construvtor屬性指向當前函式,通過這個建構函式我們便可以為原型物件新增其他的屬性和方法。

原型鏈

原型鏈的出現就是為了實現繼承。利用原型讓乙個應用型別繼承另乙個應用型別的屬性和方法。

function

supertype()

supertype.prototype.getsupervalue=function

();function

subtype

()

subtype.prototype=new supertype();

//繼承,這裡subtype的原型指向了supertype的原型物件

sub.prototype.getsubvalue=function

();var instance=new subtype();

alert(instance.getsupervalue());//true

所有函式的預設原型都是object的例項,因此,預設原型都會包含乙個內部指標指向object.prototype。

subtype繼承supertype,而supertype繼承了object。當呼叫instance.tostring時,實際上呼叫的是儲存在object.prototype中的那個方法。

兩種方法來確定原型和例項之間的關係1.instanceof操作符

2.isprototypeof()方法

alert(instance instanceof

object);//true

alert(supertype.portotype.isprototypeof(instance));//true

注意:

1.重寫父類中的方法一定要在新增新方法之前,因為重寫之後會覆蓋已有的鏈,這樣新寫的方法就被覆蓋掉了。

2.差不多,就是在通過原型鏈實現繼承時,不能使用物件字面量建立原型方法,這樣做也會重寫覆蓋原型鏈。

subtype.prototype=;

wrong:function();

};推薦部落格:

js 原型與原型鏈

5條原型規則 1.所有的引用型別 陣列 物件 函式 都具有物件特性,即可自由擴充套件屬性 除了 null 除外 2.所有的引用型別 陣列 物件 函式 都有乙個 proto 隱式原型 屬性,屬性值是乙個普通的物件。3.所有的函式,都有乙個prototype 顯式原型 屬性,屬性值也是乙個普通的物件。4...

JS原型與原型鏈

凡是通過new function 建立的物件都是函式物件,其他的是普通物件。var o1 var o2 new object var o3 new f1 function f1 var f2 function var f3 new function str console.log str conso...

js原型與原型鏈

定義函式的時候都建立了乙個函式物件,裡面有個prototype屬性指向了乙個object空物件,這個物件就是函式的原型物件。原型物件中有個constructor屬性,指向函式物件 通過new建立的物件,有個 proto 屬性 左右都是兩個下劃線 它等於對應建構函式的的prototype的值,如上圖。...