Dans le "Guide JavaScript autorisé" d'hier, les notes 10: Modèle d'objet amélioré ECMAScript 5, un phénomène étrange s'est produit lors du débogage d'un morceau de code. Publiez maintenant le code source ci-dessous:
La copie de code est la suivante:
<script type = "text / javascript">
fonction de fonction () {}
var per = nouvelle personne;
Object.defineproperties (par,
{
"surnom":
{
Valeur: "Tom",
Écrivable: vrai
},
"âge":
{
Valeur: 20,
configurable: faux,
Écrivable: faux
}
});
var o = object.getownPropertyDescriptor (par, "surnom");
alert (json.stringify (o));
</cript>
L'exécution des résultats dans Google:
http://img.blog.csdn.net/20140529073008296?watermark/2/text/ahr0cdovl2jsb2cuy3nkbi5uzxqv dtaxmta0mzg0mw == / font / 5a6l5l2t / fontsize / 400 / fill / i0jbqkfcma == / dissolver / 70 / gravity / centre
Ce résultat est correct, mais si vous le changez dans un autre endroit, le résultat sera différent
La copie de code est la suivante:
<script type = "text / javascript">
fonction de fonction () {}
var per = nouvelle personne;
Object.defineproperties (par,
{
"surnom":
{
Valeur: "Tom",
Écrivable: vrai
},
"âge":
{
Valeur: 20,
configurable: faux,
Écrivable: faux
}
});
var name = object.getownPropertyDescriptor (par, "surnom");
alert (json.stringify (name));
</cript>
Résultats en cours:
Pourquoi est-ce? Je viens de changer un nom de variable simple
Le problème réside dans le nom, mais je ne le comprends pas. J'ai recherché des informations en ligne mais je n'ai eu aucun résultat. Plus tard, je suis allé demander à un frère senior et poser le problème sur le forum: http://bbs.csdn.net/topics/390799744?page=1#post-397474060,
Le nom est une propriété de fenêtre, qui est utilisée pour définir ou renvoyer le nom de la fenêtre, et le type de données est une chaîne. Étant donné que la première phrase est la fonction personne () {}, elle s'est terminée, de sorte que le code suivant peut être dans le contexte global, c'est-à-dire que vous pensez Alert (JSON.Stringify (nom)); est la sortie de nom var ci-dessus, mais en fait, il peut s'agir de la sortie de la fenêtre. Quant à la sortie [objet objet], ce type est le type de valeur du nom.