创建对象时应用类似的方法
如果我想在另一个函数中运行一个函数,我可以像这样传递一些参数:
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
}
If I want to run a function within another function I can pass in some of the arguments like so:
function applyFunc(type) {
myNamespace[type].apply(this, arguments.splice(1));
}
But is there a similar method (or really simple workaround) for instantiating a new object, i.e. pass the outer arguments into the inner function, but using the new keyword too?
function newObj(type) {
new myNamespace[type].apply(this, arguments.splice(1)); //apply doesn't work here
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,它应该有效。如果您的代码中没有,您可以考虑使用
Array.prototype.slice.call(arguments,1)
(或[].slice.call(arguments,1)
code>) 而不是arguments.splice(1)
。这里有一些测试代码,也可以在 这个 jsfiddle 片段中找到:Yes, it should work. If it doesn't in your code, you may consider using
Array.prototype.slice.call(arguments,1)
(or[].slice.call(arguments,1)
) in stead ofarguments.splice(1)
. Here's some test code, also to be found in this jsfiddle snippet: