Pergunta

Estou a brincar com um projeto Javascript lingüística. Eu gostaria de construí-lo usando objetos para representar substantivos e funções para armazenar Verbos como isso faz com que conceituar o meu projeto menos difícil. Eu estou usando funções como chaves para um objeto (eu escrevi um exemplo abaixo). Será possível serializar isso com JSON quando se trata tempo para salvar os dados.

function verbFn() {
   //do something
}

var nouns = {};

nouns[verbFn] = 'some value';

Neste exemplo, vai JSON ser capaz de serializar "substantivos"?


Uh ... depois de refletir sobre a minha pergunta original e ler os comentários eu vim à conclusão de que tentar fazer as coisas desta forma é apenas muito errado e tolo.

Foi útil?

Solução

Não, JSON não pode fazer isso. As chaves têm de ser strings com aspas duplas.

Além disso, parece que você não está realmente usando a função como uma chave - que está sendo convertido em uma string:

<script>

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

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

</script>

Outras dicas

De acordo com os não você não pode. A chave tem que ser uma string

você não está realmente usando funções como chaves - você está usando a conversão de cadeia de uma função como chave, que também depende implicitamente nessas representações de seqüência de ser único. Para plataformas que funções de suporte Decompiling esta multa funciona, mas, teoricamente, poderia haver implementações que apenas retornar "[função]", que seria muito ruim no seu caso.

JSON é uma sintaxe estrutura de dados. Uma função não é dados, de modo que não há nenhuma maneira que pode ser serializados como parte de uma estrutura de dados (chave ou de outra forma). Independentemente da linguagem, implementação ou qualquer outra pessoa.

Não, as chaves devem ser sempre cordas e nada mais. Consulte o padrão descrição .

E nouns não é um array, é mapa, tabela hash, matriz associativa, "objeto", um desses, qualquer nome que você preferir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top