0

如果我想在另一个函数中运行一个函数,我可以传入一些参数,如下所示:

function applyFunc(type) {
    myNamespace[type].apply(this, arguments.splice(1));
}

但是是否有类似的方法(或非常简单的解决方法)来实例化一个新对象,即将外部参数传递给内部函数,但也使用 new 关键字?

function newObj(type) {
    new myNamespace[type].apply(this, arguments.splice(1)); //apply doesn't work here
}
4

1 回答 1

0

是的,它应该工作。如果它不在您的代码中,您可以考虑使用Array.prototype.slice.call(arguments,1)(or [].slice.call(arguments,1)) 代替arguments.splice(1). 这是一些测试代码,也可以在这个 jsfiddle 片段中找到:

function C(){}

C.prototype.fun = function(){
 alert('hello'+[].slice.call(arguments).join('\n'));
};

function newf(t){
 new C()[t].apply(this,[].slice.call(arguments,1));
}

new C().fun.apply(null,[1,2,3]); //works
newf('fun',1,2,3); //works
于 2011-02-11T12:35:20.413 回答