0

いくつかのバックボーンの例を見ると、次のような単純なモデルがいくつか見られます。

var Vehicle = Backbone.Model.extend(
{
   summary: function () {
   return 'Vehicles move';
   }

});

また

Vehicle = (function () {
return Backbone.Model.extend({
   defaults: {

   },

   initialize: {

   }
});

})();

編集: (明確化) バックボーン オブジェクトを定義する 2 つの方法と、より一般的な方法との違いを誰かが説明できるかどうか疑問に思っていました。内部に同じメソッドがないことは知っていますが、最初のメソッドでバックボーン モデルを拡張し、2 つ目のメソッドでそれをクロージャでラップする方法にもっと興味があります。それぞれで何が起こっているのか、いつどのパターンを使用するのかを本当に理解しているかどうかはわかりません。前もって感謝します!

4

2 に答える 2

1

特にBackbone.jsのメインWeb サイトに2 番目のフォームがまったく表示されていないため、最初のフォームの方がはるかに従来型であると考えられます。

同じことを行う方法を理解するために、Backbone.Model.extend() は関数を返す関数でもあることに注意してください。

> Backbone.Model.extend()
  function () { return parent.apply(this, arguments); }

したがって、変数Vehicleは、いずれにせよモデル コンストラクター メソッドである関数に設定されることになります。ただし、2番目の形式はより間接的で不必要に複雑であると考えます。それVehicle自体が を返すだけの関数を呼び出した結果に設定されているためBackbone.Model.extend()、同じことをより複雑な言い方で言っているだけです。

于 2013-03-22T05:19:18.990 に答える
1

モデルのすべてのプロパティを簡単に定義できる場合は、パターン 1 が推奨されます。ただし、実装が複雑なプロパティがあるため、モデルまたはグローバル オブジェクトで公開したくない「プライベート」ヘルパー関数が必要な場合は、クロージャを使用して非表示にすることをお勧めします。それがパターン2です。

例:

Vehicle = (function () {

function helper1() {} //don't want to expose it
function helper2() {}

return Backbone.Model.extend({
   defaults: {

   },

   initialize: {

   }

   summary: function() {
      helper1();
      helper1();
   }

});

})();
于 2013-03-22T08:55:13.837 に答える