我正在涉足语言学Javascript项目。我想使用对象来构建它来表示名词和存储动词的函数,因为这使得我的项目概念化变得更加困难。我正在使用函数作为对象的键(我在下面写了一个例子)。在保存数据时,是否可以使用JSON对其进行序列化。
function verbFn() {
//do something
}
var nouns = {};
nouns[verbFn] = 'some value';
在这个例子中,JSON能否序列化“名词”?
答案 0 :(得分:4)
不,JSON不能这样做。 键必须是双引号字符串。
此外,您似乎并没有将该功能用作键 - 它正在被转换为字符串:
<script>
var x = {};
x[window.open] = true;
for (var i in x)
alert(typeof i + '\n' + i); // typeof i == string
</script>
答案 1 :(得分:2)
根据standards不,你不能。密钥必须是字符串
答案 2 :(得分:1)
你并没有真正使用函数作为键 - 你正在使用函数的字符串转换作为键,这也隐含地依赖于那些唯一的字符串表示。对于支持反编译功能的平台,这种方法很好,但理论上可能会有一些实现只返回“[function]”,这在你的情况下会非常糟糕。
答案 3 :(得分:0)
不,键应该始终是字符串而不是别的。请参阅the standard description。
nouns
不是数组,它是地图,哈希表,关联数组,“对象”,其中之一,您喜欢的任何名称。
答案 4 :(得分:0)
JSON是一种数据结构语法。函数不是数据,因此无法将其序列化为数据结构(密钥或其他)的一部分。无论语言,实施还是其他任何方式。