javascript中的類式繼承

2021-06-22 04:05:25 字數 2481 閱讀 4568

//輔助函式,讓你可以將新函式繫結到物件的prototype上

//為function.prototype增加乙個公有方法。所有由類的擴充的函式都可以使用它,

//它返回this,當我寫乙個不需要返回值的方法時,我通常讓它返回this,這顧慮到了串聯樣式

function.prototype.method = (name, func) ;

//inherits方法,它的作用是讓乙個類從另乙個上繼承

//這一函式可以提供簡單的單物件繼承,他的**主要圍繞在任意物件方法中呼叫this.uber('methodname')為中心,並再讓

//這個uber方法去執行他要覆蓋的父物件的方法

//允許從其他物件繼承函式,同時仍然可以呼叫屬於父物件的那些函式

function.method(, (parent) ,

//繼承父物件的方法

p = (.prototype = parent());

//建立乙個新的名為'uber'的"特權函式",呼叫它時會執行所有在繼承時被重寫的函式

.method(, uber(name)

//f為要執行的函式,r為函式的返回值,v為父物件的prototype

f, r, t = d[name], v = parent.prototype;

//如果uber被呼叫的時候,會進入到這一步

(t)

//從該prototype中獲取函式

f = v[name];

} //否則是'uber'的第一次呼叫

}//記錄我們在繼承堆疊中所在位置的級數

d[name] += 1;

//使用除第乙個以外的所有的arguments 並呼叫此函式,因為第乙個引數是執行的函式名

//恢復繼承堆疊

d[name] -= 1;

//返回執行過的函式的返回值

r;});

;});//swiss方法自始自終迴圈arguments引數,對於每乙個名稱,它都複製出乙個成員從父類的原型上到新類的原型上。

//只繼承父物件特定函式的函式,而非使用new parent(),繼承所有函式

function.method(, (parent)

;});方法的使用

function parenizor(value)

parenizor.method("toal", function () );

function mparenizor(value)

mparenizor.inherits(parenizor);

mparenizor.method("toal", function () );

function fparenizor(value)

fparenizor.inherits(mparenizor);

fparenizor.method("toal", function (name) );

function hparenizor(value)

hparenizor.inherits(fparenizor);

hparenizor.method("toal", function () );

var myzparenizor = new hparenizor("laoli");

var mystring = myzparenizor.toal();

new子物件的例項,然後呼叫toal方法,toal方法執行到return this.uber("toal","lilei")這句的時候,會呼叫inherits函式

的uber方法,由於此方法第一次執行,所以d[toal]=0,然後進入f=p[toal],由於當前物件有toal方法,向下執行,將f置為

此方法將引數傳遞給f函式,並將指標改為this,來執行父物件的toal方法,然後父物件的toal方法被執行,

fparenizor.method("toal", function (name) );

當執行到 return this.uber("toal","haerbin") 由於第二次執行此方法,所以d[toal]為1,然後進入while迴圈,

通過v = v.constructor.prototype將直接找到v的原始的prototype,執行原始prototype上的toal方法,

parenizor.method("toal", function () );

然後將返回值賦給r,然後將d[toal]減1(由於已經找到原始的toal方法,d[toal]值應為1,所以進行自減).

這是我對類式繼承的理解,不知道有沒有高手幫我看下,給修改或補充下唄

詳細頁面:

JavaScript學習筆記 建構函式的繼承

現在有乙個 動物 物件的建構函式 function animal 還有乙個 貓 物件的建構函式 function cat name,color 怎樣才能使 貓 繼承 動物 呢?function cat name,color var cat1 newcat 大毛 黃色 console.log cat1...

單身狗和動物的故事 Javascript繼承

閒話少敘,繼續講單身狗的故事。function animal function dog name 我們知道,單身狗是一種動物,那麼工廠怎麼來表示這種繼承關係呢?function animal function dog name var dog new dog 單身狗 console.log dog....

python怎麼繼承類 python類的繼承

一 概述 二 類的繼承 2.1 繼承的定義 2.2 建構函式的繼承 2.3 子類對父類方法的重寫 三 類繼承的事例 一 概述 物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。通過繼承建立...