创建对象时应用类似的方法

发布于 2024-10-16 17:32:37 字数 358 浏览 8 评论 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
}

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眸中客 2024-10-23 17:32:37

是的,它应该有效。如果您的代码中没有,您可以考虑使用 Array.prototype.slice.call(arguments,1) (或 [].slice.call(arguments,1) code>) 而不是 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

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 of arguments.splice(1). Here's some test code, also to be found in 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文