0

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

function verbFn() {
   //do something
}

var nouns = {};

nouns[verbFn] = 'some value';

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


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

4

5 回答 5

4

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

此外,看起来您实际上并没有将该函数用作键 - 它正在被转换为字符串:

<script>

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

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

</script>
于 2009-05-07T12:12:51.300 回答
2

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

于 2009-05-07T12:13:44.667 回答
1

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

于 2009-05-07T12:44:47.650 回答
0

不,键应该始终是字符串,而不是其他任何东西。见标准说明

并且nouns不是数组,它是映射、哈希表、关联数组、“对象”,其中之一,无论您喜欢什么名称。

于 2009-05-07T12:18:24.327 回答
0

JSON 是一种数据结构语法。函数不是数据,因此无法将其序列化为数据结构(键或其他)的一部分。无论语言,实现或其他任何东西。

于 2009-05-07T12:31:31.970 回答