Object.defineProperties(Function.prototype, {
'applyConstructor': {
enumerable: false,
configurable: true,
writable: true,
value: function applyConstructor(list) {
var args = Array.prototype.slice.call(list);
args.unshift(null); // dummy
var Bound = this.bind.apply(this, args);
return new Bound();
}
},
'callConstructor': {
enumerable: false,
configurable: true,
writable: true,
value: function callConstructor() {
var args = Array.prototype.slice.call(arguments);
args.unshift(null); // dummy
var Bound = this.bind.apply(this, args);
return new Bound();
}
}
});
and, create Factory Pattern.function Test(a, b) {
this.a = a;
this.b = b;
}
Test.create = Test.callConstructor.bind(Test);
and use it.var test = Test.create(10, 20); test.test();
This entry is posted first at my blog