Table des matières
What does instanceof actually check?
When should you use instanceof?
Are there alternatives to instanceof?
One thing to watch out for
Maison interface Web js tutoriel Quel est le but de l'instance de l'opérateur?

Quel est le but de l'instance de l'opérateur?

Jul 02, 2025 am 01:06 AM
Jugement de type

instanceof在JavaScript中用于检查对象是否为特定类或构造函数的实例,其核心机制是检测对象的原型链。例如,john instanceof Person返回true,因为john由Person构造函数创建。对于内置类型如数组,arr instanceof Array和arr instanceof Object均返回true,因数组继承自Object。使用场景包括:1.操作前进行类型检查;2.处理继承与子类关系;3.自定义错误处理,如区分ValidationError和NetworkError。替代方案包括typeof(适用于原始类型)、Object.prototype.toString.call(检测内置类型)以及检查方法/属性存在性。但跨执行上下文使用时需注意问题,如不同frame中的对象会引发误判,此时应优先使用Array.isArray()等专用方法,并避免过度依赖类型判断而采用基于行为的编程方式。

What is the purpose of the instanceof operator?

The instanceof operator in JavaScript is used to check whether an object is an instance of a specific class or constructor function. It helps determine the type of an object at runtime, which can be especially useful when dealing with inheritance or when you need to ensure an object has a certain structure or behavior.

What does instanceof actually check?

At its core, instanceof checks the prototype chain of an object. When you create an object using a constructor function or a class, JavaScript sets up an internal link (via the [[Prototype]] property) to that constructor’s prototype. The instanceof operator walks up this prototype chain to see if it finds the given constructor's prototype.

For example:

function Person(name) {
  this.name = name;
}

const john = new Person('John');

console.log(john instanceof Person); // true

In this case, john is an instance of Person, so instanceof returns true.

You can also use it to detect built-in types:

const arr = [];

console.log(arr instanceof Array);  // true
console.log(arr instanceof Object); // true

Since arrays inherit from Object, both checks return true.

When should you use instanceof?

Use instanceof when you want to verify that an object was created by a particular constructor or belongs to a certain class hierarchy. This is especially helpful in scenarios like:

  • Type checking before performing operations
    If your code expects a certain kind of object, using instanceof ensures the input matches the expected type before proceeding.

  • Working with inheritance and subclasses
    In complex object-oriented designs where one class extends another, instanceof can help identify not only the immediate type but also any parent types.

  • Custom error handling
    You might define custom error classes and use instanceof to distinguish between different error types during a try/catch block.

Example:

class ValidationError extends Error {}
class NetworkError extends Error {}

try {
  // some operation
} catch (err) {
  if (err instanceof ValidationError) {
    console.log('Validation failed');
  } else if (err instanceof NetworkError) {
    console.log('Network issue');
  }
}

Are there alternatives to instanceof?

Yes — depending on what you're trying to do, you may consider:

  • typeof operator: Useful for primitive types (number, string, boolean, etc.), but doesn’t work well with objects or custom types.
  • Object.prototype.toString.call(): A more reliable way to detect built-in types like arrays, dates, regex, etc.
  • Checking for method/property presence: Sometimes, instead of checking the exact type, you just need to know if the object supports a certain interface.

However, none of these fully replace instanceof when dealing with user-defined classes or deep inheritance chains.

One thing to watch out for

Be careful when using instanceof across different execution contexts (like frames or windows in browsers). Each window has its own global context, meaning that an array created in one frame won't be considered an instance of Array from another frame. In such cases, prefer using Array.isArray() or similar built-in methods.

Also, avoid relying too much on instanceof in loosely typed logic. Sometimes, writing code that works based on behavior rather than specific types (duck typing) leads to more flexible and reusable code.

基本上就这些。

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1543
276
Appareils et contextes avancés JavaScript Appareils et contextes avancés JavaScript Jul 24, 2025 am 12:42 AM

La portée de JavaScript détermine la portée d'accessibilité des variables, qui sont divisées en étendue globale, fonction et au niveau du bloc; Le contexte détermine la direction de cela et dépend de la méthode d'appel de fonction. 1. Les étendues incluent la portée globale (accessible n'importe où), la portée de la fonction (valide uniquement dans la fonction) et la portée au niveau du bloc (LET et const sont valides dans {}). 2. Le contexte d'exécution contient l'objet variable, la chaîne de portée et les valeurs de cela. Cela pointe vers global ou non défini dans la fonction ordinaire, l'appel de méthode pointe vers l'objet d'appel, le constructeur pointe vers le nouvel objet, et peut également être explicitement spécifié par appel / application / liaison. 3. La fermeture fait référence aux fonctions accédant et en se souvenant des variables de portée externes. Ils sont souvent utilisés pour l'encapsulation et le cache, mais peuvent provoquer

API de composition Vue 3 Vs API Options: une comparaison détaillée API de composition Vue 3 Vs API Options: une comparaison détaillée Jul 25, 2025 am 03:46 AM

CompositionAPI dans Vue3 convient plus à la logique complexe et à la dérivation de type, et OptionsAPI convient aux scénarios et débutants simples; 1. OptionsAPI organise le code en fonction d'options telles que les données et les méthodes, et a une structure claire mais les composants complexes sont fragmentés; 2. CompositionAPI utilise la configuration pour concentrer la logique liée, ce qui est propice à la maintenance et à la réutilisation; 3. CompositionAPI réalise la réutilisation logique sans conflit et paramétrisable par le biais de fonctions composables, ce qui est mieux que le mixin; 4. CompositionAPI a une meilleure prise en charge de la dérivation de type dactylographiée et de type plus précise; 5. Il n'y a pas de différence significative dans le volume de performances et d'emballage des deux; 6.

Maîtriser les modèles de concurrence JavaScript: les travailleurs du web contre les threads Java Maîtriser les modèles de concurrence JavaScript: les travailleurs du web contre les threads Java Jul 25, 2025 am 04:31 AM

Il existe une différence essentielle entre les travailleurs Web de JavaScript et Javathreads dans un traitement simultané. 1. JavaScript adopte un modèle unique. WebWorkers est un fil indépendant fourni par le navigateur. Il convient pour effectuer des tâches longues qui ne bloquent pas l'interface utilisateur, mais ne peuvent pas utiliser le DOM; 2. Java prend en charge le multithreading réel à partir du niveau de la langue, créé via la classe de threads, adapté à un traitement simultanée complexe et côté serveur; 3. Les travailleurs Web utilisent PostMessage () pour communiquer avec le fil principal, qui est hautement sécurisé et isolé; Les threads Java peuvent partager la mémoire, de sorte que les problèmes de synchronisation doivent être prêts à prêter attention; 4. Les travailleurs Web sont plus adaptés à l'informatique parallèle frontale, comme le traitement d'image, et

Construire un outil CLI avec Node.js Construire un outil CLI avec Node.js Jul 24, 2025 am 03:39 AM

Initialiser le projet et créer package.json; 2. Créez un script d'entrée index.js avec shebang; 3. Registre des commandes via des champs bin dans package.json; 4. Utilisez des Yargs et d'autres bibliothèques pour analyser les paramètres de ligne de commande; 5. Utilisez le test local NPMLink; 6. Ajouter l'aide, la version et les options pour améliorer l'expérience; 7. Publier éventuellement via NPMPublish; 8. Affectuer éventuellement l'achèvement automatique avec Yargs; Enfin, créez des outils CLI pratiques grâce à une structure raisonnable et à une conception de l'expérience utilisateur, effectuer des tâches d'automatisation ou distribuer des widgets et se terminer par des phrases complètes.

Comment créer et ajouter des éléments dans JS? Comment créer et ajouter des éléments dans JS? Jul 25, 2025 am 03:56 AM

Utilisez Document.CreateElement () pour créer de nouveaux éléments; 2. Personnaliser les éléments via TextContent, ClassList, SetAttribute et d'autres méthodes; 3. Utilisez des méthodes APPEDCHILD () ou plus flexibles APPEND () pour ajouter des éléments au DOM; 4. Utiliser éventuellement INSERTBEFORE (), avant () et d'autres méthodes pour contrôler la position d'insertion; Le processus complet consiste à créer → Personnaliser → Ajouter, et vous pouvez mettre à jour dynamiquement le contenu de la page.

Types conditionnels avancés en dactylographie Types conditionnels avancés en dactylographie Aug 04, 2025 am 06:32 AM

Les types de conditions avancées de TypeScript implémentent le jugement logique entre les types via TextendU? X: Y Syntaxe. Ses capacités de base se reflètent dans les types de conditions distribuées, l'inférence de type inférieure et la construction d'outils de type complexe. 1. Le type conditionnel est distribué dans les paramètres de type nu et peut automatiquement diviser le type de joint, tel que pour obtenir la chaîne [] | nombre []. 2. Utiliser la distribution pour construire des outils de filtrage et d'extraction: exclut exclut les types via TextendU? Never: T, extraire extrait les points communs via TextendU? T: jamais, et des filtres non nuls nuls / non définis. 3

Architecture Micro Frontend: un guide de mise en œuvre pratique Architecture Micro Frontend: un guide de mise en œuvre pratique Aug 02, 2025 am 08:01 AM

MicrofronttendSSolvescalingCallegengeSInLargeTeamsByAnabled indépendante développement et élaboration de choOsanIntegrationsStrategy: UseModuleFederationInwebpack5ForruntimeLoadingAndTrue Independence, Build-Time IntegrationForsIpleSetups, Oriframes / webcomponents webcomponents

Comment trouver la longueur d'un tableau en javascript? Comment trouver la longueur d'un tableau en javascript? Jul 26, 2025 am 07:52 AM

Pour obtenir la longueur d'un tableau JavaScript, vous pouvez utiliser la propriété de longueur intégrée. 1. Utilisez l'attribut .Length pour renvoyer le nombre d'éléments dans le tableau, tels que constfruits = ['Apple', 'banana', 'orange']; console.log (fruits.length); // output: 3; 2. Cet attribut convient aux tableaux contenant tout type de données telles que des chaînes, des nombres, des objets ou des tableaux; 3. L'attribut de longueur sera automatiquement mis à jour et sa valeur changera en conséquence lorsque des éléments seront ajoutés ou supprimés; 4. Il renvoie un décompte basé sur un zéro et la longueur du tableau vide est de 0; 5. L'attribut de longueur peut être modifié manuellement pour tronquer ou étendre le tableau,

See all articles