首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript应用于构造函数,抛出“格式错误的形式参数”

javascript应用于构造函数,抛出“格式错误的形式参数”
EN

Stack Overflow用户
提问于 2009-12-24 18:04:08
回答 4查看 6.1K关注 0票数 24

感谢对this question的出色响应,我理解了如何使用varargs调用javascript函数。

现在,我希望将应用与构造函数结合使用

我发现了一些有趣的信息,on this post

但是我的代码正在抛出错误

尝试1:

代码语言:javascript
运行
复制
var mid_parser = new Parser.apply(null, mid_patterns);

错误:

代码语言:javascript
运行
复制
TypeError: Function.prototype.apply called on incompatible [object Object]

尝试2:尝试1:

代码语言:javascript
运行
复制
var mid_parser = new Parser.prototype.apply(null, mid_patterns);

错误:

代码语言:javascript
运行
复制
TypeError: Function.prototype.apply called on incompatible [object Object]

企图2:

代码语言:javascript
运行
复制
function Parser()
{
    this.comparemanager = new CompareManager(arguments);
}

mid_patterns = [objA,objB,objC]
var mid_parser = new Parser();
Parser.constructor.apply(mid_parser, mid_patterns);

错误:

代码语言:javascript
运行
复制
syntax_model.js:91: SyntaxError: malformed formal parameter

企图3:

代码语言:javascript
运行
复制
var mid_parser = Parser.apply(null, mid_patterns);

错误:

代码语言:javascript
运行
复制
TypeError: this.init is undefined // init is a function of Parser.prototype

我现在有个解决办法:

代码语言:javascript
运行
复制
function Parser()
{
    if(arguments.length) this.init.call(this,arguments); // call init only if arguments
}
Parser.prototype = {
   //...
   init: function()
   {
         this.comparemanager = new CompareManager(arguments);
   }
   //...
}

var normal parser = new Parser(objA,objB,objC);

mid_patterns = [objA,objB,objC]
var dyn_parser = new Parser();
dyn_parser.init.apply(dyn_parser, mid_patterns);

这是很好的工作,但它不是像我想的那样干净和普遍。

在javascript中可以用varargs调用构造函数吗?

EN

Stack Overflow用户

发布于 2012-10-09 21:49:09

要完成@CMS解决方案并保留原型链,您可以这样做:

代码语言:javascript
运行
复制
var mid_parser = {};
mid_parser.__proto__ = Parser.prototype;
Parser.apply(mid_parser, mid_patterns);

作为一个附带说明,它将不与IE8-。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1959247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档