讓我們純手寫乙個js繼承吧

2022-06-25 11:00:16 字數 1165 閱讀 7174

繼承在前端邏輯操作中是比較常見的,今天我們就從零開始寫乙個js的繼承方式

es5中繼承實質上是先建立子類的例項物件,然後再將父類的方法新增到this上parent.call(this),在es6中則是先建立父類的例項物件this呼叫父類的super(),然後再用子類的建構函式修改this,所以無論是哪種方法必然牽扯到的操作是

一、 以另乙個物件替換當前執行物件的call方法

function.prototype.mycall = function

()

二、建立例項物件的new方法

function

mynew(fn, arg) ,

fn = array.from(arguments)[0],

arg = array.from(arguments).slice(1)

object.setprototypeof(obj, fn.prototype)

fn.mycall(obj,...arg)

return

obj }

完成這兩步前提條件之後我們開始用自己的方法完成js繼承

function

fa(name)

fa.prototype.set1 = function

() function

sa(name, age)

sa.prototype.set2 = function

() sa.prototype =mynew(fa)

sa.prototype.constructor =sa

var qq = mynew(sa, 123, 456)

qq.set1()

//[1,2,3]

因為es6中class的繼承方式必須用new關鍵字來呼叫,所有在此不做過多描述,**如下

class fa 

set()

}class sa extends fa

}var dd = new sa(123, 456)

dd.set()

//[1,2,3]

讓我們一起在樹莓派上編寫第乙個程式吧

入手樹莓派開始慢慢折騰,從基礎開始記錄,慢慢提高,高手繞過。預設已經裝好作業系統並啟動進入樹莓派操作介面 1.在編寫更改下樹莓派的vi編譯器,因為自帶的有點彆扭,狀態不顯示,退格退不了 前提網路已連線好 刪除自帶的,輸入命令,remove刪除 sudo apt get remove vim comm...

js如何手寫乙個new

function dog name dog.prototype.sayname function var dog new dog 小狗 dog.sayname 結果為小狗 function dog name dog.prototype.sayname function 上面是本身dog functi...

讓我們開發乙個瀏覽器(二)

讓我們開發乙個瀏覽器 一 實現了在乙個標籤中跳轉的建議瀏覽器,接下來新增一些功能,如位址列 多標籤 前進 後退 重新整理.實現效果如下 原始碼如下 from pyqt5.qtcore import qurl,pyqtsignal,qt from pyqt5.qtgui import qmovie,q...