1

したがって、このコンストラクターをいくつかのプロトタイプメソッドで設定し、いくつかの差分に適用するための動作(このオブジェクトが作成する)が必要なためです。要素、私は次のことを行うよりも良い方法があるかどうか疑問に思いました。

var MAINFUNC = function(opts){
 this.options = {
      item1  : 'somevalue'
  },
  this.init(opts);
}

MAINFUNC.prototype = {
   someFunc1: function(){
       // do stuff
    },
   someFunc2: function(){
       // do stuff
    },
   someFunc3: function(){
         // do stuff
   },
init: function(data){
      $.extend(this.options, data);
      this.someFunc1();
     }
 };
var obj1Create =  new MAINFUNC({ someoptions });
var obj2Create = new MAINFUNC({ someoptions });
var obj2Create = new MAINFUNC({ someoptions });

したがって、最後の3つのobjのインスタンス化は、少し鈍感に見えます。おそらく私は間違っていますが、これを行うにはもっと洗練された方法があると思います。そして、はい、各thos obj * Createは、MAINFUNCによって提供される動作を必要とするdiff要素を表します。

ありがとうございました。

4

1 に答える 1

4
var MAINFUNC = function(opts)
{
   var m = Object.create(MAINFUNC.prototype);
   m.options = { ... };
   m.init(opts);
   return m;
};

var o = [{someoptions}, {someoptions}, {someoptions}].map(MAINFUNC);
// objects are all now in array

このアプローチの副次的な利点は、MAINFUNC使用するかどうかに関係なく機能することですnew。これにより、特に収集機能を使用すると、管理がはるかに容易になります。

于 2013-02-02T03:55:49.540 に答える