Cette fois, je vais vous montrer comment détecter les valeurs de référence dans le développement web, et quelles sont les précautions à prendre pour détecter les valeurs de référence dans le développement web. Ce qui suit est un cas pratique, jetons un coup d'oeil.
Les valeurs de référence sont également appelées objets. En JS, toutes les valeurs autres que les valeurs primitives sont des références. Il existe plusieurs types de référence intégrés : Objet, Tableau, Date et Erreur, peu nombreux. L'opérateur typeof est incapable de déterminer ces types de référence, car tous les objets renverront "object".
Une autre utilisation non recommandée de typeof est lors de la détection du type de null. L'opérateur typeof renverra "object" lorsqu'il est utilisé pour null. Cela semble étrange et est considéré comme un bug sérieux dans la spécification standard. Par conséquent, vous devez éviter d'utiliser typeof pour détecter le type de null lors de la programmation.
La meilleure façon de détecter le type d'une valeur de référence est d'utiliser l'opérateur instanceof. La syntaxe de base de instanceof est la suivante : valeur instanceof constructeur.
Une fonctionnalité intéressante d'instanceof est qu'il détecte non seulement le constructeur qui a construit l'objet, mais détecte également la chaîne de prototypes. La chaîne de prototypes contient de nombreuses informations, notamment le modèle d'héritage utilisé pour définir l'objet. Par exemple, par défaut, chaque objet hérite de Object, donc la valeur instanceof Object pour chaque objet renvoie true. Pour cette raison, il n’est pas optimal d’utiliser la valeur instanceof Object pour déterminer si un objet est d’un type spécifique.
L'opérateur instanceof peut également détecter des types personnalisés, tels que :
function Person (name) { this.name = name; }var me = new Person('Nicholas');console.log(me instanceof Object); // trueconsole.log(me instanceof Person); // true
Lors de la détection de types personnalisés dans JS, le meilleur moyen est d'utiliser l'opérateur instanceof, qui est également la seule méthode . Il en va de même pour les types JS intégrés (en utilisant l'opérateur instanceof). Il existe cependant une sérieuse limite.
Supposons qu'un objet dans un cadre de navigateur (frameA) soit passé dans un autre cadre (frameB). Le constructeur Person est défini dans les deux cadres. Si l'objet de l'image A est une instance de Personne de l'image A, alors les règles suivantes s'appliquent.
frameAPersonInstance instanceof frameAPerson; // trueframeAPersonInstance instanceof frameBPerson; // false
Étant donné que chaque cadre a une copie de Person, elle est considérée comme une instance de copie de Person dans ce cadre, même si les deux définitions peuvent être exactement les mêmes. Ce problème ne se produit pas seulement avec les types personnalisés, mais également avec deux autres types intégrés très importants : les fonctions et les tableaux. Pour ces deux types, il n’est généralement pas nécessaire d’utiliser instanceof.
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Comment détecter les valeurs originales dans le développement Web
Comment utiliser JS pour passer par là référence et passer par valeur
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!