Maison >interface Web >js tutoriel >« this » et « obj » dans les fonctions littérales d'objet : quand dois-je utiliser lequel ?
Référence littérale d'objet dans votre propre fonction : explorer « ceci » par rapport à « obj »
Lors de la définition d'une fonction dans un littéral d'objet, vous peut se poser la question de savoir s'il faut référencer l'objet comme « ceci » ou directement en utilisant « obj ». Bien que les deux approches puissent sembler produire le même résultat, il y a des implications potentielles à prendre en compte.
Référencer « ceci » dans une fonction
Utiliser « ceci » dans la fonction suppose que la fonction sera toujours appelée comme méthode de l'objet. Cette approche peut entraîner des problèmes lors de l'appel de la fonction en dehors du contexte de l'objet. Par exemple :
var obj = { key1: "it", key2: function() { return this.key1 + " works!"; } }; var func = obj.key2; // Assign function to a new reference alert(func()); // Error: Reference lost outside of object context
Référencer « obj » dans une fonction
Référencer directement « obj » dans la fonction résout le problème rencontré dans l'exemple précédent. Cependant, cela introduit un problème différent :
var obj = { key1: "it", key2: function() { return obj.key1 + " works!"; } }; var newref = obj; obj = { key1: "something else"; }; alert(newref.key2()); // Outputs "something else works"
Dans ce cas, si l'objet référencé par 'obj' est modifié, la fonction continuera à utiliser les propriétés de l'objet mises à jour. Cela peut conduire à un comportement inattendu, surtout si la référence de l'objet est modifiée pendant la durée de vie de la fonction.
Choisir la meilleure approche
Le choix entre référencer « ceci » et « obj » dépend du contexte spécifique et des risques potentiels associés à chaque approche. Si la fonction est uniquement destinée à être utilisée dans le contexte de l'objet, l'utilisation de « this » peut être préférable. Cependant, si la fonction peut être utilisée en dehors du contexte de l'objet ou s'il existe un risque de modification de la référence de l'objet, référencer directement « obj » offre une approche plus sûre.
Garantir l'intégrité de l'objet
Pour les scénarios où la préservation de l'intégrité de l'objet est cruciale, considérez ce qui suit options :
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!