如果我想在另一个函数中运行一个函数,我可以传递一些参数,如:
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
}
答案 0 :(得分:0)
是的,它应该有效。如果代码中没有,您可以考虑使用Array.prototype.slice.call(arguments,1)
(或[].slice.call(arguments,1)
)代替arguments.splice(1)
。这是一些测试代码,也可以在this jsfiddle snippet中找到:
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