可以JSON序列化使用* functions *作为键的数组吗?

时间:2009-05-07 12:05:38

标签: javascript json semantics

我正在涉足语言学Javascript项目。我想使用对象来构建它来表示名词和存储动词的函数,因为这使得我的项目概念化变得更加困难。我正在使用函数作为对象的键(我在下面写了一个例子)。在保存数据时,是否可以使用JSON对其进行序列化。

function verbFn() {
   //do something
}

var nouns = {};

nouns[verbFn] = 'some value';

在这个例子中,JSON能否序列化“名词”?


呃...在回顾了我原来的问题并阅读了评论后,我得出的结论是,以这种方式做事情是非常错误和愚蠢的。

5 个答案:

答案 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是一种数据结构语法。函数不是数据,因此无法将其序列化为数据结构(密钥或其他)的一部分。无论语言,实施还是其他任何方式。