这个问题已经解决。
根据karuzo的回答,我完成了最终版本:
$['to'] = function ($a)
{
$u = JSON.stringify(this); $w = this.typeof(); $x = $a.typeof();
if ($x == 'Array')
{
if ($w == 'Object')
{
$y = []; this.keys().for(($l, $m, $n) =>
{
$y[$m] = [$l, this[$l]];
});
return $y;
}
else if ($w == 'Array')
{
return [].slice.call(this);
}
else if ($w == 'String')
{
return [this];
};
}
else if ($x == 'Object')
{
if ($w == 'Object')
{
return this.to("").from({});
}
else if ($w == 'Array')
{
$y = {}; this.for(($l, $m, $n) =>
{
$l != {}._ ? $y[$m] = $l : null;
});
return $y;
}
else if ($w == 'String')
{
return {value: this};
}
}
else if ($x == 'String')
{
if ($w == 'Object')
{
return JSON.stringify(this).replace(/\"([^(\")"]+)\":/g, '$1:');
}
else if ($w == 'Array')
{
return $u;
}
else if ($w == 'String' | $w == 'Number')
{
return this.toString();
};
}
else
{
return this;
};
}
该版本直接包含在代码所在的文件paxiom.js中。
上面的代码中使用的某些功能在库中。我知道这会吸引一些观众,因此,当库的版本#1完成时,它将在https://hbms.github.io/-/paxiom.js处可用。
最佳答案
你可以试试:
var obj = {a: "x", b: ["y"], c: {d: ["z"]}, e: [{f: "g"}]};
var objStr = JSON.stringify(obj).replace(/\"([^(\")"]+)\":/g,"$1:");
console.log(objStr);
输出:
{a:"x",b:["y"],c:{d:["z"]},e:[{f:"g"}]}
您可以
eval()
结果字符串:var obj = eval(objStr)