2017-08-14 49 views
-2

在ES6之前,JavaScript無法創建類(我知道它有自己的創建方法,它們是構造函數......),它是一種基於原型的語言。JavaScript可以被認爲是基於類的語言嗎?

現在,在添加類聲明和新的繼承方法之後,它可以被認爲是基於類的語言,比如Java和C++嗎?

+0

你是指一種面向對象的語言? –

+1

這絕對取決於「基於類」的含義。 ES6類語法仍使用原型繼承創建對象。 – loganfsmyth

+0

JavaScript已經是一種面向對象的語言,但不像其他語言那樣基於類。 –

回答

3

JavaScript是一種面向對象的語言,並且一直是。

新的ES6類語法僅僅提供了一種更漂亮的方式來聲明ES6之前語言中已經可以做的事情(您只需手動配置現在爲您完成的一些事情)。

新的ES6類語法仍然使用原型,其方式與ES5中的對象完全相同,之前也是如此。所以,封面上並沒有新的東西。 ES6將大多數開發人員已經在做的事情(定義對象,從其他對象定義繼承,等等)編譯成實際的語言語法。

因此,ES6類語法的確讓開發人員更方便。它並沒有從根本上改變Javascript的功能或工作原理。

在ES6之前,JavaScript沒有辦法創建類(我知道它有自己的方式來創建它們是構造函數....),它是一個基於原型的語言。

此聲明有點誤導。 ES6的工作方式與ES5一樣。它仍然使用原型。來自class關鍵字的對象定義的創建方式與ES5中的相同(使用原型)。我們現在只有一個內置的語法,而不是手動聲明構造函數,然後向原型添加方法。所以,有語法改進,但是一旦聲明瞭對象,它的工作方式就不會發生根本性的變化。

現在,在添加類聲明和新的繼承方法之後,它可以被認爲是基於類的語言,比如Java和C++嗎?

不是。它仍然是一種基於原型的語言,即使是聲明也只是最終構建原型。我會說Javascript是非常面向對象的(一直都是)。我不會試圖在這方面將它與Java和C++進行比較,因爲它有點像比較蘋果和橘子。他們對事情的處理方式不同,並沒有絕對的「客觀」或「有用」的「更多」或「更少」基於階級的措施。

我會建議花費時間在你認識或正在考慮學習的不同語言的優缺點上,以便你明白它們最適合用於什麼,並且不用花時間去弄清楚哪些是「更多」或「比其他」更好。他們是非常不同的,都可以用來做各種各樣的事情。根據各自的優勢,一些工具可以在某些方面比其他工具更好。

相關問題