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 });

所以,它的最后三个 obj 实例似乎有点迟钝。也许我是不正确的,但我认为有一种更精致的方式来做到这一点。是的,每个 obj*Create 都代表一个差异元素,它需要 MAINFUNC 提供的行为。

谢谢你。

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 回答