2017-08-14 3 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キーワードのオブジェクト定義は、(プロトタイプを使用して)E​​S5と同じように作成されます。手動でコンストラクタを宣言してからプロトタイプにメソッドを追加するのではなく、組み込みのシンタックスを作成しました。したがって、構文の改善がありますが、オブジェクトが宣言された後の動作の根本的な変更はありません。

クラス宣言と新しい継承方法を追加した後、JavaやC++のようなクラスベースの言語と考えることができますか?

実際はありません。それはまだプロトタイプベースの言語であり、class宣言だけでもプロトタイプを構築することになります。私はJavascriptは非常にオブジェクト指向(常にされている)と言うでしょう。私はそれをJavaとC++と比較しようとしません。なぜなら、それはリンゴとオレンジを比較するようなものだからです。彼らは物事について別々に行きます。客観的または有用な「より多くの」または「より少ない」クラスベースの絶対的な尺度はありません。

あなたが知っているか、あるいは学習を検討している言語の長所と短所に時間を費やすことをお勧めします。あなたは彼らが最もよく使うことができるものを理解しています。他よりも "良い"。彼らは非常に異なっており、多種多様なことをするためにすべて使用することができます。いくつかのものはツールキットの方が優れており、それ以外は個々の強みに基づいているものもあります。

関連する問題