JavaScript中的Super()是什麼?
在JavaScript中了解super()
:本指南探討了JavaScript中的super()
關鍵字,重點是從父類中繼承。儘管JavaScript的類系統建立在原型繼承上, super()
提供了熟悉的基於類的繼承語法。
super()
關鍵字不是JavaScript所唯一的; Java和Python之類的語言類似地使用它來引用父類。但是,JavaScript的方法有所不同。它利用了對基於類的基於類的繼承行為的原型繼承。 Mozilla的文檔強調,JavaScript類是基於現有原型的繼承的“句法糖”。
讓我們用代碼示例說明。考慮兩個類: Fish
(父母)和Trout
(孩子)。 Fish
具有特性habitat
和length
。 Trout
擴展了Fish
,增加了variety
特性。
類魚{ 構造函數(棲息地,長度){ this.habitat =棲息地; this.length =長度; } } 鱒魚延伸魚{ 構造函數(棲息地,長度,品種){ 超級(棲息地,長度); //致電父母的構造函數 this.variety =多樣性; } }
在Trout
的構造函數中, super(habitat, length)
至關重要。它稱為Fish
的構造函數,在Trout
對象的上下文中建立了habitat
和length
特性。省略super()
將導致參考錯誤。這說明了super()
如何將父級的屬性集成到子類中。
重要的是,JavaScript具有靈活性。雖然您必須調用super()
以避免錯誤,但您不必傳遞父構建器所期望的確切參數。您可以直接分配屬性:
鱒魚延伸魚{ 構造函數(棲息地,長度,品種){ 極好的(); this.habitat =棲息地; this.length =長度; this.variety =多樣性; } }
這種方法雖然不太清楚,但取得了相同的結果。沒有參數的super()
創建屬性,但使其不確定,從而允許後續作業。這突出了與Java這樣的真實類繼承模型的關鍵區別。
super()
還超越了構造函數。它可以訪問父類方法。讓我們添加一個renderProperties
方法以顯示屬性:
類魚{ RenderProperties(element){ element.innerhtml = json.stringify(this); } } 鱒魚延伸魚{ RenderPropertieswithsuper(element){ element.ClassName =“ green”; super.renderproperties(element); //調用父級的方法 } }
Trout
的renderPropertiesWithSuper
重新使用Fish
的renderProperties
,增加了額外的功能。命名( renderPropertiesWithSuper
)是故意的;它避免覆蓋父母的方法,從而訪問兩者。
重要的是要注意,這種基於類的語法本質上是一種便利。可以在沒有extends
和super()
情況下實現相同的功能,但具有更複雜的代碼涉及直接的原型操縱。這加強了“句法糖”概念。
總之,JavaScript類在使用原型繼承時,提供了具有super()
類似類別的結構。了解這一細微差別以及原型遺傳基本原理,是有效使用JavaScript中的類的關鍵,尤其是在諸如React之類的框架中。
以上是JavaScript中的Super()是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tartanify.com上,我們收集了5,000多個格子呢
