為什麼react的元件要,為什麼react的元件要super

2021-06-13 09:39:31 字數 1647 閱讀 7863

1樓:廣州啟匯營銷策劃****

原因呼叫super的原因:在es6中,在子類的constructor中必須先呼叫super才能引用this。

super(props)的目的:在constructor中可以使用this.props。

最後,可以看下react文件,裡面有一段:

在es6中實現繼承,直接呼叫super(name),就可以直接繼承父類的屬性和方法,所以super作用就相當於上述的實現繼承的步驟,不過es6提供了super語法糖,簡單化了繼承的實現。

2樓:匿名使用者

解釋一:

呼叫super的原因:在es6中,在子類的constructor中必須先呼叫super才能引用this

super(props)的目的:在constructor中可以使用this.props

最後,可以看下react文件,裡面有一段

class components should always call the base constructor with props.

解釋二:

假設在es5要實現繼承,首先定義一個父類:

//父類

function sup(name)

//定義父類原型上的方法

sup.prototype.printname = function ()

現在再定義他sup的子類,繼承sup的屬性和方法:

function sub(name,age)

sub.prototype = new sup //把子類sub的原型物件指向父類的例項化物件,這樣即可以繼承父類sup原型物件上的屬性和方法

sub.prototype.constructor = sub //這時會有個問題子類的constructor屬性會指向sup,手動把constructor屬性指向子類sub

//這時就可以在父類的基礎上新增屬性和方法了

sub.prototype.printage = function ()

這時呼叫父類生成一個例項化物件:

let jack = new sub('jack',20)

jack.printname() //輸出 : jack

jack.printage() //輸出 : 20

這就是es5中實現繼承的方法。而在es6中實現繼承:

class sup

printname()

}class sub extends sup

printage()

}let jack = new sub('jack',20)

jack.printname() //輸出 : jack

jack.printage() //輸出 : 20

對比es5和es6可以發現在es5實現繼承,在es5中實現繼承:

首先得先呼叫函式的call方法把父類的屬性給繼承過來

通過new關鍵字繼承父類原型的物件上的方法和屬性

最後再通過手動指定constructor屬性指向子類物件

而在es6中實現繼承,直接呼叫super(name),就可以直接繼承父類的屬性和方法,所以super作用就相當於上述的實現繼承的步驟,不過es6提供了super語法糖,簡單化了繼承的實現

react怎麼用jquery的元件

我們為什麼要讀書?我們讀書要為什麼

為什麼讀書首先要明白什麼是讀書,讀書不只單單指的是在學校的死讀課本,讀書最重要的是取我所需來提升自己的能力,為社會盡自己應盡的義務。從大的來說我們現在的讀書是為社會的需要,社會正在不斷的進步發展,科技正在成為第一生產力,讀書了擁有了一定的知識才能更好的適應社會。小的來說對我們可以提高我們的自身修養,...

為什麼說「德比才重要」,為什麼德比才重要

有了德,你才會得到別人的尊重。德比就屬於內戰,一個城市的球迷分兩批,這樣看起來多給力多帶勁啊。還有就是一個城市有2個足球隊的話每個星期都可以看好幾場比賽,你不用跑來跑去了!你沒發現,不管什麼德比,都很火爆麼?為什麼德比才重要 辯論賽 德才兼備,德在前才在後說明德比才重要。求反駁!要明確何為才和,何為...

男人為什麼要為自己的事業奮鬥啊,男人,為什麼要奮鬥

作為男人這是激勵自己努力奮進是很好的表現,要是碰到好吃懶做的還不如努力奮鬥的呢,是吧,最起碼他有自己的目標,創出事業來養家啊。麻煩採納,謝謝 生活是現實的,要有好的生活就要就要物質和精神上的美好。物質和精神現實的來於錢,要有錢就要工作,這個工作在人的眼裡就叫事業,因此要為事業奮鬥。在這奮鬥中,是為了...