因此,我为此构造函数设置了一些原型方法,并且因为我需要将行为(该对象创建的行为)应用于一些差异。元素,我想知道是否有比以下方法更好的方法。

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提供的行为。

谢谢。

最佳答案

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正常工作。这使其更易于管理,尤其是在具有收集功能的情况下。

关于javascript - Javascript/jQuery-简而言之或简化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14658398/

10-11 13:19