>我的許多朋友是C#或C開發人員。他們習慣於在項目中使用繼承,當他們想學習或發現JavaScript時,他們問的第一個問題之一是:“但是我該如何使用JavaScript進行繼承?”>
實際上,JavaScript使用與C#或C不同的方法來創建面向對象的語言。這是一種基於原型的語言。原型製作的概念意味著可以通過克隆作為原型的現有對象來重複行為。 JavaScript中的每個對像都會從原型定義對象可以使用的一組函數和成員的原型。沒有班級。只是對象。然後,每個對像都可以用作另一個對象的原型。
實施繼承
我們使用JavaScript可視化我們想要通過此層次結構創建的內容:
首先,我們可以輕鬆創建Classa。因為沒有明確的類,所以我們可以通過創建這樣的函數來定義一組行為(so…):
可以使用新關鍵字實例化此“類”:
<span>var <span>ClassA</span> = function() { </span> <span>this.name = "class A"; </span><span>}</span>>非常簡單,對嗎?
完整的樣本只有8行長:
<span>var a = new ClassA(); </span><span>ClassA.prototype.print = function() { </span> <span>console.log(this.name); </span><span>}</span>
>現在,讓我們添加一個工具以在類之間創建“繼承”。此工具只需要做一件事情:克隆原型:
a<span>.print();</span>>
這正是魔術發生的地方!通過克隆原型,我們將所有成員和功能傳輸到新類。
>因此,如果我們要添加一個將是第一堂課的第二類,我們只需要使用此代碼: >
>
>輸出為: 與JavaScript更多動手 WebGL 3D,HTML5和Babylon.js >現代Web平台Jumpstart(HTML,CSS和JS的基本原理) >在JavaScript繼承中'構造函數'的作用是什麼?用於創建和初始化對象。在繼承的背景下,使用“超級”關鍵字在子類的構造函數中通常調用父類的構造函數函數。這允許子類繼承父級的屬性和方法。 在引入ES6時,JavaScript現在具有更傳統的基於類的語法,用於定義構造函數和使用繼承。 “類”關鍵字用於定義類,“擴展”關鍵字用於創建從父類繼承的子類。 “超級”關鍵字在子類的構造函數中使用,以調用父類的構造函數。 > javaScript中的“繼承”和“組合”之間有什麼區別? JavaScript中的代碼。繼承是對像或類從父對像或類繼承屬性和方法的地方。另一方面,組成是由對象由其他對象組成的地方,功能被委派給了這些組件對象。雖然繼承是關於“ is-a”關係(子類是父類的一種類型),但構圖是關於“ has-a”關係(一個對象具有其他對象)。 ><span>var <span>ClassA</span> = function() {
</span> <span>this.name = "class A";
</span><span>}</span>
然後,由於classB繼承了Classa的打印函數,因此以下代碼正常工作:<span>var a = new ClassA();
</span><span>ClassA.prototype.print = function() {
</span> <span>console.log(this.name);
</span><span>}</span>
並產生以下輸出:a<span>.print();</span>
var ClassA = function() {
this.name = "class A";
}
ClassA.prototype.print = function() {
console.log(this.name);
}
var a = new ClassA();
a<span>.print();</span>
>
<span>var inheritsFrom = function (child<span>, parent</span>) {
</span> child<span>.prototype = Object.create(parent.prototype);
</span><span>};</span>
創建classC現在很明顯:<span>var <span>ClassB</span> = function() {
</span> <span>this.name = "class B";
</span> <span>this.surname = "I'm the child";
</span><span>}
</span>
<span>inheritsFrom(ClassB, ClassA);</span>
<span>var b = new ClassB();
</span>b<span>.print();</span>
>這可能會讓您感到驚訝,但是微軟在許多開源JavaScript主題上擁有大量免費學習,我們的任務是隨著Project Spartan的到來而創造更多的東西。查看我自己的:
>使用ASP.NET和AngularJS
實用的性能提示,使您的HTML/JavaScript更快(從響應式設計到休閒遊戲再到性能優化的7部分系列)
>使用HTML和JavaScript Jumpstart開發通用Windows應用程序(使用已創建的JS來構建應用程序)
本文是Microsoft的Web Dev技術系列的一部分。我們很高興與您共享Spartan項目及其新的渲染引擎。在Modern.ie上獲取免費的虛擬機或遠程測試。經常詢問有關JavaScript繼承的問題(常見問題解答)
在JavaScript中的經典和原型繼承是什麼區別?經典的繼承,也稱為構造函數繼承,是從類或構造函數創建新對象的地方。這類似於繼承在Java或C等語言中的工作方式。另一方面,原型繼承是JavaScript所獨有的。它涉及創建一個從現有對象繼承屬性的新對象。這是使用object.create()方法或通過將新對象的原型設置為現有對象完成的。兩者之間的主要區別在於,經典的繼承使用類和構造函數函數,而原型繼承使用對象。 >
>原型鏈如何在JavaScript繼承中起作用? JavaScript繼承中的概念。當對像上訪問屬性或方法時,JavaScript首先檢查該對像是否具有該屬性或方法。如果沒有,JavaScript然後檢查對象的原型。此過程繼續延續原型鏈,直到找到屬性或方法或達到鏈的末端(通常是內置對象原型)。該機制允許對像從其原型繼承屬性和方法,從而在JavaScript中啟用代碼重複使用和繼承。 >您能否解釋JavaScript繼承中的“超級”概念? JavaScript中的關鍵字在類的上下文中用於在對象的父母上調用函數。換句話說,“超級”使您可以在對象的父類上訪問和調用功能,從而使您能夠重複使用父類的方法。這在子類的構造函數中特別有用,您可能需要在其中調用父類的構造函數。 >
>我如何在JavaScript中覆蓋繼承的方法? >繼承如何與JavaScript ES6類一起使用?
您可以在JavaScript中解釋多個繼承嗎?一個對像或類可以從多個父母繼承的地方。但是,可以使用Mixins模擬多個繼承。混合蛋白是一種技術,對像或類可以從多個來源“混合”屬性和方法。這使您可以將多個對像或類的功能組合到一個。
>
以上是JavaScript的簡單繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!