1

私はJavascriptでOOPが処理される方法を理解しようとしていますが、coffescriptがコンストラクター関数とプロトタイプを定義する方法に出くわしました。誰かがこのコードの利点を教えてもらえますか

Animal = (function() {

  function Animal(name) {
    this.name = name;
  }

  Animal.prototype.move = function(meters) {
    return alert(this.name + (" moved " + meters + "m."));
  };

  return Animal;

})();

これと比較して

function Animal(name) {
  this.name = name;
}

Animal.prototype.move = function(meters) {
  return alert(this.name + (" moved " + meters + "m."));
};
4

1 に答える 1

2

最初の例には、Animalオブジェクトをラップする匿名の自己実行関数があります。

与えられた例では、これは追加のカプセル化を提供しません。ただし、通常は、より複雑なオブジェクトを返すか、グローバルスコープで宣言される追加の変数に依存することをお勧めします(悪いことです)。

于 2013-02-01T12:46:11.793 に答える