Javascript / jQuery - 无论如何要简写这个或减少钝

时间:2013-02-02 03:52:02

标签: javascript jquery

所以,我有这个构造函数设置了一些原型方法,因为我需要行为(这个对象创建)应用于一些diff。我想知道是否有比下面更好的方法。

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都代表一个diff元素,它需要MAINFUNC提供的行为。

谢谢。

1 个答案:

答案 0 :(得分: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有效。这使得它更易于管理,尤其是对于集合函数。