Maison >interface Web >js tutoriel >Comment le mot-clé « this » se comporte-t-il dans les littéraux d'objet JavaScript ?

Comment le mot-clé « this » se comporte-t-il dans les littéraux d'objet JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 21:48:21629parcourir

How Does the `this` Keyword Behave in JavaScript Object Literals?

Comportement du mot clé "this" dans les littéraux d'objet Javascript

Dans un littéral d'objet, le mot clé "this" sert d'espace réservé pour l'objet lui-même. Cependant, son comportement peut varier en fonction de la condition dans laquelle il est appelé.

Dans votre code :

var MyDate = function(date) {
    this.date = date;
};

var obj1 = {
    foo: new Date(),
    bar: new MyDate(this.foo)  //  this.foo is undefined
};

var obj2 = {};
obj2.foo = new Date();
obj2.bar = new MyDate(this.foo);  //  this.foo is undefined

var obj3 = {
    foo: new Date(),
    bar: new MyDate(obj3.foo)
};

var obj4 = {};
obj4.foo = new Date();
obj4.bar = new MyDate(obj4.foo);

Comprendre "cette" liaison

Le mot-clé "this" de Javascript présente une liaison tardive, ce qui signifie que sa valeur n'est pas déterminée tant que la fonction n'est pas invoquée. Dans votre cas :

Scénario 1 et 2 :

  • Dans "obj1" et "obj2", le mot-clé "this" dans le "new MyDate" function fait référence à l'objet global (c'est-à-dire "fenêtre") car elles ne sont pas invoquées en tant que méthodes d'un objet spécifique. Puisqu'il n'y a pas de propriété nommée "foo" sur l'objet global, cela entraîne une erreur non définie.

Scénarios 3 et 4 :

  • Dans "obj3" et "obj4", le mot clé "this" fait référence avec succès aux objets respectifs car la fonction "new MyDate" est appelée comme méthode de ceux-ci. objets. Par conséquent, "this.foo" accède correctement à la propriété "foo" au sein de chaque objet.

Conclusion

Le comportement du mot-clé "this" dans l'objet Les littéraux dépendent du contexte dans lequel la fonction est invoquée. S'il n'est pas explicitement lié à un objet, il s'agit par défaut de l'objet global. Cependant, lorsqu'il est appelé en tant que méthode d'un objet, il fait référence à cet objet spécifique, garantissant un accès approprié aux propriétés et méthodes de l'objet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn