所以,我有这个构造函数设置了一些原型方法,因为我需要行为(这个对象创建)应用于一些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提供的行为。
谢谢。
答案 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
有效。这使得它更易于管理,尤其是对于集合函数。