2016-05-30 8 views
0

Javascriptプログラマーは通常 'class'キーワードを使用しません。Javascriptのキーワード 'class'は通常のjavascriptコードには表示されません

私はその理由を知りたいです。要するに

コード以下

はそうundetstandやすいと「拡張」を使用して簡単に見えるコンセプト

class Animal { 
       constructor(type){ 
        this.type = type; 
       } 
       static isAnimal(obj, type){ 
        if(!Animal.prototype.isPrototypeOf(obj)){ 
         return false; 
        } 
        return type ? obj.type === type : true; 
       } 
      } 

      class Dog extends Animal { 
       constructor(name, breed){ 
        super("dog"); 
        this.name = name; 
        this.breed = breed; 
       } 
       bark(){ 
        alert("ruff, ruff"); 
       } 
       print(){ 
        alert("The dog " + this.name + " is a " + this.breed); 
       } 
       static isDog(obj){ 
        return Animal.isAnimal(obj, "dog"); 
       } 
      } 

      var sparkie = new Dog("Sparkie", "Border Collie"); 
      sparkie.bark(); 
+0

[ecma6](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)にはクラス宣言があります。 –

+0

Bhojendra Ndepalは、古いバージョンのjavam(ecam6より古い)がclassキーワードをサポートしていないことを意味しますか? –

+1

ここでは正確に何が問題ですか? – jfriend00

答えて

2

、Javascriptがプロトタイプベースではなく、クラスベース。これらのメカニズムのいくつかは、他のプログラミング言語に由来する人物と似ているかもしれませんが、内部的にオブジェクトをリンクするメカニズムは、継承、インスタンスなどのクラスをリンクするものとは異なり、Python、Ruby 、ジャワなど

カイル・シンプソンは彼のオンラインの著作で、彼のOSSブックシリーズYDKJS(this and Object Prototypes題し特に1)

にはるかに徹底的にこのトピックをカバー

JSオブジェクト指向スタイルを参照する実装は、他の言語のクラスベースのメカニズムに近似するためのいくつかの異なるパターンにすぎません。あなたは "野生"で出会うかもしれないいくつかの異なるJavascript OOパターンがあります。これらの七つは、ここで説明されています

コメンターの一つが指摘したように、ES6はclassキーワードを持っているが、それはJSで既存のメカニズムを超えるだけの「ドレッシング」です。 JSがクラスベースではなくプロトタイプベースであり続けるという事実は変わることはありません。

+0

これはすばらしいリンクです。 –

関連する問題