javascript - 从 JSON 文件预加载自定义对象
问题描述
我在 javascript (Vector) 中有一个自定义原型函数。这些实例作为属性存储在一个包含大约 100 万个对象的大数组 (allTiles) 中的对象(图块)中。
我有一个漫长而复杂的过程来创建和填充它 - 运行大约需要 20 分钟。但是结果是静态的,我想从静态 JSON 文件中预加载它们以绕过生成过程。
过去我可以使用 JSON.stringify 执行此操作,并将结果存储在单独的 js 文件中。然而,这对本机数据类型比对自定义函数更有效。当我在这种情况下这样做时,我得到一个 localVector 被表示为具有正确值的对象 - 但不是作为 Vector 的实例(及其所有可用方法等)。
我将不胜感激有关如何构造静态 JSON 文件的任何指针,在该文件中我可以获得与从此类代码中获得的相同结果(假设向量函数和原型当然会在执行此文件中的代码之前加载)。
注意 - 我有一个 hacky 解决方法,我不喜欢从 JSON 创建然后迭代列表并手动将对象转换为向量 - 这比从头开始生成要快得多,但仍然很慢,我假设/希望有一个更正确的做法。
生成代码的起始位置:
//simple version of complex generation process
let allTiles = [];
let tile1 = {ID:abc, localVector : new Vector(x, y)};
allTiles.push(tile1);
//....repeat a million times
//from this position code like this works fine:
allTiles[0].localVector.add(anotherVector)
矢量原型。
function Vector(x, y) {
this.x = x || 0;
this.y = y || 0;
}
Vector.prototype = {
set: function (x, y) {
this.x = x || 0;
this.y = y || 0;
return this;
},
add: function (v) {
this.x += v.x;
this.y += v.y;
return this;
}
}
解决方案
推荐阅读
- c# - 使用 Dynamic Linq 的具有多个条件的左外连接
- python - Python绘制多维列表?
- sql-server - 如何代表远程服务器执行 sys.dm_exec_connections?
- html - 在网格内容上强制滚动条
- ios - 线程 1:在 iPhone Swift 4.1 上运行时发出信号 SIGABRT;0_abort_with_payload
- javascript - html 表单数据到 MySQL db
- c++ - 如何在 QML 文档中嵌入 QLabel?
- php - 当:HTML Input type =“text”时如何防止数字数据?
- git - Git reset 显示要从服务器获取的一项
- php - 关于如何清理/缩短我的代码的任何建议?