2016-10-16 2 views
0

私はTypescriptの遊び場を見て、このクラスの宣言を見た:私は常にjavascript(ES5)のクラスのように機能する関数を実行する必要がありますか?

var Greeter = (function() { 
    function Greeter(message) { 
     this.greeting = message; 
    } 
    Greeter.prototype.greet = function() { 
     return "Hello, " + this.greeting; 
    }; 
    return Greeter; 
}()); 

EcmaScript5ドで、私はいつもを同じように動作機能を実行する必要があります。このES5コードに変換

class Greeter { 
    greeting: string; 
    constructor(message: string) { 
     this.greeting = message; 
    } 
    greet() { 
     return "Hello, " + this.greeting; 
    } 
} 

クラス?それともprotoype.greetが初期の無名関数の中にあるからでしょうか? MDNから

+1

いいえ、読みやすいようにプロトタイプオブジェクトをカプセル化することをお勧めします。必要な場合は、プライベート状態とヘルパーを持つことができます。 – synthet1c

+0

いいえ。コンストラクタのプロトタイプを試しても、IIFEを使用する必要はありません。 – Redu

答えて

1

:ECMAScriptの6で導入され

JavaScriptのクラスには、JavaScriptの既存のプロトタイプベースの継承を超える構文砂糖です。クラス構文では、JavaScriptに新しいオブジェクト指向の継承モデルが導入されていません。 JavaScriptクラスは、オブジェクトを作成して継承を処理するためにはるかに簡単で分かりやすい構文を提供します。

はい。あなたは常にクラスのように機能する関数を実行する必要があります。

+1

私は彼らがes5クラスの閉鎖について話していると思います – synthet1c

関連する問題