要求很简单。这里有一堂课...
class myobj {
constructor(var1, var2) {
this.var1 = var1;
this.var2 = var2;
}
addThemUp() {
return this.var1 + this.var2;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我制作其中之一...
var myInstance = new MyObj(3, 7);
Run Code Online (Sandbox Code Playgroud)
迷人的。但是现在我需要序列化它,以便我可以保存它并稍后加载它。就像是...
serialise(myInstance);
// Save to a file
// ... do some other stuff ...
// load from file
myInstance = unserialise(fileData);
// - or -
unserialise(fileData, myInstace);
// etc...
Run Code Online (Sandbox Code Playgroud)
如何?我不在乎表示采用什么形式,因为它将被同一页面加载。如果仅保存值,则将它们加载回对象的通用方法会很好,因为同一页面具有用于查找函数定义的类“模板”。
该对象很大且不断变化,因此从 JSON 手动复制值以保留函数实际上是不可维护的。但是可以使用任意数量和类型的变量来实现这一点的解决方案将很有用。
我还必须坚持使用 vanilla、单文件 javascript,尽管在现代浏览器中。
TL;DR:如何在不丢失功能的情况下序列化和反序列化对象?
对于某些课程,我需要通过蛮力生成一个普通的魔方,这是代码的一部分.仅供参考; 我不允许使用除常用之外的任何类.(我可能用Math.Pow推动我的运气)
我有以下方法来生成2维大小NxN:
static int[,] GenerateSquare(int n)
{
int[,] sqarray = new int[n,n];
int[] rndarray = new int[n];
//puts completely random integers from 1 to n^2 in all elements of the square array (sqarray)
for (int i = 0; i < n; i++)
{
rndarray = FullRndArray(n);
for (int j = 0; j < n; j++)
{
sqarray[i, j] = rndarray[j];
}
}
return sqarray;
}
Run Code Online (Sandbox Code Playgroud)
FullRndArray()方法如下:
static int[] FullRndArray(int n)
{
//creates an array of size n and fills …
Run Code Online (Sandbox Code Playgroud)