No estudo "Javascript Guide", de ontem, notas 10: Ecmascript 5 Modelo de objeto aprimorado, um fenômeno estranho ocorreu ao depurar um pedaço de código. Agora poste o código -fonte abaixo:
A cópia do código é a seguinte:
<script type = "text/javascript">
function pessoa () {}
var per = nova pessoa;
Object.DefineProperties (PER,
{
"apelido":
{
Valor: "Tom",
gravável: verdadeiro
},
"idade":
{
Valor: 20,
Configurável: falso,
gravável: falso
}
});
var o = object.getownPropertyDescriptor (por, "apelido");
alerta (json.stringify (o));
</script>
Executando resultados no Google:
http://img.blog.csdn.net/20140529073008296?watermark/2/text/ahr0cdovl2jsb2cuy3nkbi5uzxxqv dTaxmta0mzg0mw ==/font/5a6l5l2t/fontsize/400/preenchimento/i0jbqkfcma ==/dissolve/70/gravidade/centro
Este resultado está correto, mas se você alterar para outro lugar, o resultado será diferente
A cópia do código é a seguinte:
<script type = "text/javascript">
function pessoa () {}
var per = nova pessoa;
Object.DefineProperties (PER,
{
"apelido":
{
Valor: "Tom",
gravável: verdadeiro
},
"idade":
{
Valor: 20,
Configurável: falso,
gravável: falso
}
});
var name = object.getownPropertyDescriptor (por, "apelido");
alerta (json.stringify (nome));
</script>
Resultados em execução:
Por que isso? Acabei de mudar um nome de variável simples
O problema está no nome, mas eu não entendo. Eu procurei informações online, mas não tive resultados. Mais tarde, fui perguntar a um irmão sênior e colocar o problema no fórum: http://bbs.csdn.net/topics/390799744?page=1#post-397474060,
O nome é uma propriedade de janela, usada para definir ou retornar o nome da janela, e o tipo de dados é uma string. Como a primeira frase é a função pessoa () {}, ela terminou, portanto o código a seguir pode estar no contexto global, ou seja, você pensa em alerta (json.stringify (nome)); é a saída de nome VAR acima, mas, na verdade, pode ser a saída da janela. Quanto à saída [objeto de objeto], esse tipo é o tipo do valor do nome.