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

function verbFn() {
   //do something
}

var nouns = {};

nouns[verbFn] = 'some value';

在此示例中,JSON是否能够序列化“名词”?


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

有帮助吗?

解决方案

不, JSON 无法做到这一点。 键必须是双引号字符串。

此外,您似乎并没有将该功能用作键 - 它正在被转换为字符串:

<script>

var x = {};
x[window.open] = true;

for (var i in x)
    alert(typeof i + '\n' + i); // typeof i == string

</script>

其他提示

根据标准,你不能。密钥必须是字符串

你并没有真正使用函数作为键 - 你正在使用函数的字符串转换作为键,这也隐含地依赖于那些唯一的字符串表示。对于支持反编译功能的平台,这种方法很好,但理论上可能存在只返回“[function]”的实现。在你的情况下这将是非常糟糕的。

JSON是一种数据结构语法。函数不是数据,因此无法将其序列化为数据结构(密钥或其他)的一部分。无论语言,实施还是其他任何方式。

不,键应该始终是字符串而不是别的。请参阅标准说明

nouns 不是数组,它是map,hash table,associative array,“object”,其中之一,你喜欢什么名字。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top