【问题标题】:javascript too many constructor argumentsjavascript构造函数参数太多
【发布时间】:2011-04-11 07:31:07
【问题描述】:

我正在尝试从外部 javascript 导入一组坐标。 我必须在构造函数中包含大约 78.740 个元素,但 firefox 只会抛出错误:
“构造函数参数过多”
有人有什么想法吗?

这是我的代码:

函数 CreateArray() { 返回新数组( ... ... ... 78.740 个元素之后 ... ); }

【问题讨论】:

  • 虽然它们存在,但永远不要使用 Array 或 Object 构造函数,使用文字而不是 'new Array/Object'。
  • BGerrissen:这有点教条。我同意文字通常更可取,但有时Array 构造函数很有用。例如:var hugeString = new Array(1e6).join("x");

标签: javascript constructor arguments


【解决方案1】:

尝试使用数组文字,它对我有用(已成功测试百万项):

function CreateArray() {   
    return [
        ...
    ];
}

【讨论】:

  • +1 旁注,最大数组长度为 4,294,967,295,但怀疑是否有人会达到 ^^
  • 包含 2,000,000 项 Firefox 抛出异常“脚本堆栈空间配额已用完”
  • 最大长度显然会因浏览器而异;)
【解决方案2】:

您可能会遇到内存限制,不确定。

尝试将值 push() 到一个数组中而不是一次性初始化所有这些值怎么样?将其分解成更小的数据块以添加到数组中,而不是在一个命令中全部添加。

var a = [];
a.push(1,2,3,4,5,6,7,8,9,10);
a.push(1,2,3,4,5,6,7,8,9,10);
a.push(1,2,3,4,5,6,7,8,9,10);
a.push(1,2,3,4,5,6,7,8,9,10);
// etc...
return a;

【讨论】:

    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 2016-08-06
    相关资源
    最近更新 更多