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

関数をキーとして実際に使用しているわけではありません。関数の文字列変換をキーとして使用しています。これは、これらの文字列表現が一意であることに暗黙的に依存しています。関数の逆コンパイルをサポートするプラットフォームの場合、これは正常に機能しますが、理論的には、「[関数]」を返すだけの実装が存在する可能性があり、これはあなたのケースではかなり悪いでしょう。

于 2009-05-07T12:44:47.650 に答える
0

いいえ、キーは常に文字列である必要があり、それ以外のものは何もありません。標準の説明を参照してください。

配列ではなく、nounsマップ、ハッシュ テーブル、連想配列、「オブジェクト」、それらの 1 つ、お好きな名前を付けてください。

于 2009-05-07T12:18:24.327 に答える
0

JSON はデータ構造の構文です。関数はデータではないため、データ構造 (キーまたはその他) の一部としてシリアル化することはできません。言語、実装などに関係なく。

于 2009-05-07T12:31:31.970 に答える