在‘new’操作符中使用.application()。这个是可能的吗?在JavaScript中,我希望创建一个对象实例(通过new运算符),但是将任意数量的参数传递给构造函数。这个是可能的吗?我想做的是这样的事情(但下面的代码不起作用):function Something(){
// init stuff}function createSomething(){
return new Something.apply(null, arguments);}var s = createSomething(a,b,c); // 's' is an instance of Something答案从这里的回复中可以清楚地看出,这里没有内置的呼叫方式。.apply()带着new接线员。然而,人们提出了一些真正有趣的解决方案。我更喜欢的解决办法是这张是马修·克鲁姆利写的(我修改了它以通过arguments财产):var createSomething = (function() {
function F(args) {
return Something.apply(this, args);
}
F.prototype = Something.prototype;
return function() {
return new F(arguments);
}})();
3 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
String
, Number
, Date
function construct(constructor, args) { function F() { return constructor.apply(this, args); } F.prototype = constructor.prototype; return new F();}
construct(Class, [1, 2, 3])
new Class(1, 2, 3)
.
var createSomething = (function() { function F(args) { return Something.apply(this, args); } F.prototype = Something.prototype; return function(args) { return new F(args); }})();
F
[最新情况]
F
function construct(constructor, args) { function F() : void { constructor.apply(this, args); } F.prototype = constructor.prototype; return new F();}
慕田峪7331174
TA贡献1828条经验 获得超13个赞
...
)
function Something() { // init stuff}function createSomething() { return new Something(...arguments);}
注:
添加回答
举报
0/150
提交
取消