4

クラスを定義するいくつかの一般的な方法を検討しています ( Addy Osmani による Book の Constructor Pattern )。

私が見る2つの主な方法:

  • 簡単なプロトタイプ:

    function Person(name) { this.name = name; }
    Person.prototype.getName = function() { return this.name; } 
    
  • ES5 Object.createObject.defineProperties

私は疑問に思っています、なぜ私はもっと複雑に見えるES5の方法を考えることさえできるのでしょうか? 何か利点はありますか?おそらく、唯一の主な利点は、厳密に型指定された言語のような読み取り専用プロパティを持つことでしょうか?

4

1 に答える 1

4

Object.definePropertiesこれらのプロパティに特定の属性 (列挙不可、読み取り専用、getter または setter 関数など) を持たせたい場合にのみ必要です。

通常のクラスとそのメソッドに使用する必要はありません。記述した「単純なプロトタイプ」メソッドが完全に適切です。

于 2013-05-19T12:36:28.140 に答える