2016-11-03 9 views
1

ECMA6クラス拡張について質問があります。 「古い」方法では、「クラス」(基本的には関数またはオブジェクト)を作成し、そのプロトタイプを追加することで「拡張」することができました。これにより、サードパーティベンダーにソフトウェア用のプラグインを書き込んで簡単に追加できるようになります。元の「クラス」をインスタンス化するだけで、プロトタイプに追加されたすべてのものにアクセスできるようになります。ECMA6の拡張機能を組み合わせる

ECMA6では、クラスを拡張することができますが、これがどのように私に同じ可能性を提供するのか分かりません。ベンダーXがクラスYを拡張する場合は、Yの代わりにXをインスタンス化する必要があります。別のベンダーが独自の拡張子Zを追加すると、それらが存在することを知り、XとZを選択する必要があります。

私はちょうどECMA6を学び始めているので、おそらくここで何か不足しているでしょう。どのように私はECMA6クラスを持つことができ、別のベンダーにそれを拡張させ、その場ですべての機能(元のクラスとすべての拡張機能)を含むインスタンスを取得できますか?

ありがとうございます!

+0

まだプロトタイプを追加することはできますが、クラスはプロトタイプシステムのラッパーだけです。また、あなたが以前にやっていたことは、拡張(継承)ではなく、サルパッチであり、サルパッチは一般的にサポートされています。 – slebetman

+0

前と同じです: 'class Foo {}; Foo.prototype.fruit = function(){return 'mango'} '。本当に変わったことはありません。 – slebetman

+0

さて、わかりました。本当に簡単です。ありがとう:)あなたが回答を投稿するなら、私はそれを受け入れるでしょう。 – BVDev

答えて

1

(新しいメソッドを組み合わせてオブジェクトを拡張する)ことで、継承を混乱させているように見えます(これは、ES6 class構文のextendsキーワードを使用しています)。

私はES6クラスは何も変わっていないと同じ可能性

を私に提供することができますどのように見ることができません。 ES6クラスはまだ.prototypeというプロパティを持つ関数であり、いつものようにプロトタイプオブジェクトを修正できます。

+0

無意味な構文的な砂糖のためのHurray! – evolutionxbox

+0

@evolutionxboxそれはまさに無意味ではありません - それがどれほど人気が​​あるかを見てください。特にサブクラス化すると、より安全です(理解しやすいままで)。そして、純粋に構文的な砂糖ではない 'クラス'のいくつかの側面がありますが、この質問には関係ありません。 – Bergi

関連する問題