将数组应用于";新";用Javascript?

将数组应用于";新";用Javascript?,javascript,metaprogramming,Javascript,Metaprogramming,我想写一个这样的函数: function myNew(constructor) { return constructor.applyNew(Array.prototype.slice.call(arguments, 1)); } 只有applyNew不存在。有办法解决这个问题吗?编辑(我以前没想过数组): 编辑(我以前没有考虑数组): 编辑(我以前没有考虑数组): 编辑(我以前没有考虑数组): 您首先必须创建一个继承自构造函数原型的对象,然后将构造函数应用于该对象以对其进行初始化: f

我想写一个这样的函数:

function myNew(constructor) {
    return constructor.applyNew(Array.prototype.slice.call(arguments, 1));
}
只有
applyNew
不存在。有办法解决这个问题吗?

编辑(我以前没想过数组):

编辑(我以前没有考虑数组):

编辑(我以前没有考虑数组):

编辑(我以前没有考虑数组):


您首先必须创建一个继承自构造函数原型的对象,然后将构造函数应用于该对象以对其进行初始化:

function applyNew(fn, args) {
    var obj;
    obj = Object.create(fn.prototype);
    fn.apply(obj, args);
    return obj;
}

您首先必须创建一个继承自构造函数原型的对象,然后将构造函数应用于该对象以对其进行初始化:

function applyNew(fn, args) {
    var obj;
    obj = Object.create(fn.prototype);
    fn.apply(obj, args);
    return obj;
}

您首先必须创建一个继承自构造函数原型的对象,然后将构造函数应用于该对象以对其进行初始化:

function applyNew(fn, args) {
    var obj;
    obj = Object.create(fn.prototype);
    fn.apply(obj, args);
    return obj;
}

您首先必须创建一个继承自构造函数原型的对象,然后将构造函数应用于该对象以对其进行初始化:

function applyNew(fn, args) {
    var obj;
    obj = Object.create(fn.prototype);
    fn.apply(obj, args);
    return obj;
}



什么是applyNew?你想做什么?@putvande一个假设的
新的
+
函数的组合。原型。如何应用
@PatrickEvans?它应该有<代码>新< /代码>语义,执行应用程序在<代码>应用程序>代码>。考虑定义“<代码> Apple新<代码> >语义——以防它们不是我所倡导的;并删除似乎不相关的
myNew
上下文。那么这是否正确:您希望使用
new
调用某个函数,但发送一个可变数量的参数?很难说,因为您在示例中使用了
参数的方式。什么是
applyNew
?你想做什么?@putvande一个假设的
新的
+
函数的组合。原型。如何应用
@PatrickEvans?它应该有<代码>新< /代码>语义,执行应用程序在<代码>应用程序>代码>。考虑定义“<代码> Apple新<代码> >语义——以防它们不是我所倡导的;并删除似乎不相关的
myNew
上下文。那么这是否正确:您希望使用
new
调用某个函数,但发送一个可变数量的参数?很难说,因为您在示例中使用了
参数的方式。什么是
applyNew
?你想做什么?@putvande一个假设的
新的
+
函数的组合。原型。如何应用
@PatrickEvans?它应该有<代码>新< /代码>语义,执行应用程序在<代码>应用程序>代码>。考虑定义“<代码> Apple新<代码> >语义——以防它们不是我所倡导的;并删除似乎不相关的
myNew
上下文。那么这是否正确:您希望使用
new
调用某个函数,但发送一个可变数量的参数?很难说,因为您在示例中使用了
参数的方式。什么是
applyNew
?你想做什么?@putvande一个假设的
新的
+
函数的组合。原型。如何应用
@PatrickEvans?它应该有<代码>新< /代码>语义,执行应用程序在<代码>应用程序>代码>。考虑定义“<代码> Apple新<代码> >语义——以防它们不是我所倡导的;并删除似乎不相关的
myNew
上下文。那么这是否正确:您希望使用
new
调用某个函数,但发送一个可变数量的参数?很难说,因为您在示例中使用
参数的方式。这会将数组传递到构造函数参数中。但是,这不允许使用动态数量的参数调用构造函数,它假设构造函数接受数组。正确,我没有想到这一点。我编辑了我的答案。这些是错误的
参数
正确的,再次错过了它…这会将数组传递到构造函数参数中。但是,这不允许使用动态数量的参数调用构造函数,它假设构造函数接受数组。正确,我没有想到这一点。我编辑了我的答案。这些是错误的
参数
正确的,再次错过了它…这会将数组传递到构造函数参数中。但是,这不允许使用动态数量的参数调用构造函数,它假设构造函数接受数组。正确,我没有想到这一点。我编辑了我的答案。这些是错误的
参数
正确的,再次错过了它…这会将数组传递到构造函数参数中。但是,这不允许使用动态数量的参数调用构造函数,它假设构造函数接受数组。正确,我没有想到这一点。我编辑了我的答案。这些是错误的
参数
正确的,再次错过了它…在ES5+中,这显然是一个合法的方法(链接/重复的问题有许多ES3答案)。+1如果有一个操作符,你就可以只做
foo-fn(args)
。哦,等等,有一个。它叫新的。:-)@RobG,假设构造函数被设置为接受数组而不是一系列参数,这并不总是可能的。一般来说,
new
在可能的情况下应该是首选。在ES5+(链接/重复的问题有许多ES3答案)中,这显然是一种合法的方法。+1如果有一个操作符,你就可以只做
foo-fn(args)
。哦,等等,有一个。它叫新的。:-)@RobG,假设构造函数被设置为接受数组而不是一系列参数,这并不总是可能的。一般来说,如果可能的话,
new
应该是首选。在ES5+中,这显然是一种合法的方法(链接/重复的问题有许多ES3答案)。+1有这样的操作员不是很方便吗