Maison interface Web js tutoriel Expliquer l'objet Object en détail dans JS

Expliquer l'objet Object en détail dans JS

Jun 09, 2018 am 10:12 AM
js object 对象

Cet article porte sur les bases de l'apprentissage JS, l'apprentissage du concept prototype d'objets Object, les amis intéressés peuvent s'y référer.

Concept d'objet

En JavaScript, tous les types de référence sont des objets. Par exemple, dans la fonction Foo() {}, Foo lui-même est une référence à un objet.

Créer une méthode objet méthode littérale nouvelle déclaration de fonction constructeur Object.create

Objet littéral

niveau de langage javascript pour créer rapidement des objets Instances de Les

1

2

3

4

var obj = {foo: 'foo', bar: 'bar'}; // Object对象字面量

var obj2 = [obj, 'foo', 'bar']; // Array数组字面量

var obj3 = /^[a-zA-Z0-9]$/; // RegExp正则字面量

var obj4 = function(){}; // Function函数字面量

Copier après la connexion

nouveau constructeur

sont transmis via le constructeur de l'objet intégré ou une fonction personnalisée. À l'aide de l'opérateur new, un objet est créé et la méthode constructeur est exécutée.

1

2

3

4

var obj = new Object();

var obj2 = new Array(1000);

var obj3 = new RegExp('^[a-zA-Z0-9]$');

var obj4 = new Function('a', 'b', 'return a + b;');

Copier après la connexion

Déclaration de fonction

L'objet créé par la déclaration de fonction est un objet spécial.

1

2

3

function Foo() {}

Foo instanceof Object;

Foo instanceof Function;

Copier après la connexion

Objet. create

Passez un objet comme prototype de l'objet renvoyé, créez un nouvel objet et pointez le prototype du nouvel objet vers l'objet transmis.

1

2

3

4

5

6

var foo = {

 'foo': 'foo',

 'bar': 'bar'

};

var o = Object.create(foo); // o.__proto__ = foo

console.log(o.foo); // o.__proto__.foo

Copier après la connexion

Utilisez Object.create(null) pour renvoyer un objet dictionnaire

1

2

3

var o = Object.create(null);

o instanceof Object; // return false;

o.toString(); // Uncaught TypeError

Copier après la connexion

Prototype d'objet

Chaque objet a un The intégré. L'attribut __proto__ pointe vers l'attribut prototype de la fonction qui l'a construit. Le

prototype.constructor du constructeur pointe vers le constructeur lui-même. Le processus de recherche des attributs d'un objet comprend les parties suivantes :

Rechercher le descripteur de données (inscriptible, valeur) ou le descripteur d'accès (getter, setter) de l'attribut de l'objet si la requête le trouve. , renvoie la valeur correspondante. Si la requête est introuvable, passez à l'étape 2. Recherchez si la valeur de l'attribut d'objet est explicitement définie (peut être détectée par Object.getOwnPropertyNames). Si l'attribut d'objet est défini, la valeur définie est renvoyée. Sinon, passez à l'étape 3. Trouver le prototype caché de l'objet__proto__Les propriétés de l'objet, les règles sont les mêmes que les étapes 1 et 2. S'il n'est pas encore trouvé, répétez l'étape 3 jusqu'à ce que __proto__ soit nul.

Le cas spécifique est présenté dans la figure ci-dessous :

Détection d'un prototype d'objet

Test d'un objet dans sa chaîne de prototypes Existe-t-il un attribut prototype d'un constructeur dans l'opérateur

instanceof Object.prototype.isPrototypeOf

instanceof

, détection au niveau du langage prototype de l'objet Si la chaîne contient le prototype du constructeur

1

2

3

function Foo () {}

Foo instanceof Function; // return true

Foo instanceof Object; // return true

Copier après la connexion

MockinstanceofRecherche si le constructeur de la chaîne de prototypes de l'objet contient le constructeur transmis, __proto__ est exposé à l'utilisateur dans certains navigateurs spécifiques

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

function Bar () {}

function isInstanceof (obj, Constructor) {

 if (obj === null) {

 return false;

 }

 // 忽略 string, number, boolean, null, undefined 类型干扰

 if (!~['object', 'function'].indexOf(typeof obj)) {

 return false;

 }

 

 var prototype = obj.__proto__;

 while(prototype) {

 if (prototype.constructor === Constructor) {

  return true;

 }

 prototype = prototype.__proto__;

 }

 return false;

}

isInstanceof(Bar, Function);

isInstanceof(Bar, Object);

Copier après la connexion

isPrototypeOf

L'attribut de fonction fourni avec l'objet prototype du constructeur, utilisé pour détecter s'il existe un objet prototype du constructeur dans la chaîne de prototypes de l'objet cible.

1

2

3

4

5

function Baz () {}

var baz = new Baz();

Baz.prototype.isPrototypeOf(baz);

Function.prototype.isPrototypeOf(baz);

Object.prototype.isPrototypeOf(baz);

Copier après la connexion

Obtenir le prototype de l'objet Object.getPrototypeOf __proto__

1

2

3

4

5

6

var o = {};

var prototype = Object.getPrototypeOf(o);

console.log(prototype === Object.prototype); // return true

// 部分浏览器有效

var o2 = {};

console.log(o2.__proto__ === Object.prototype); // return true

Copier après la connexion

Définir le prototype de l'objet Object.create Object.setPrototypeOf

Object.create

Renvoyer un objet et définir son prototype

1

2

3

4

5

6

7

8

function Foo () {}

 function Bar () {}

 Foo.prototype.foo = 'foo';

 Bar.prototype = Object.create(Foo.prototype);

 Bar.prototype.constructor = Bar; // 修正原型链的constructor

 var o = new Bar();

 console.log(o.foo); // return foo;

 console.log(o instanceof Bar); // return true

Copier après la connexion

Object.setPrototypeOf

Définir directement le prototype implicite de l'objet__proto__

1

2

3

4

5

function Foo () {}

 Foo.prototype.name = 'foo';

 var o = Object.create(null);

 Object.setPrototypeOf(o, Foo.prototype);

 console.log(o.name); // return foo

Copier après la connexion

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Actualiser la page les données vuex ne disparaissent pas et la page ne saute pas problème (tutoriel détaillé)

AngularJS liaison de données bidirectionnelle Principes fixes (tutoriel détaillé)

Problèmes liés au stockage de données et à l'acquisition de valeur dans les mini-programmes WeChat

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

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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)

Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies avec PHP et JS Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies avec PHP et JS Dec 17, 2023 pm 06:55 PM

Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies avec PHP et JS

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS

Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières Dec 18, 2023 pm 03:39 PM

Conseils de développement PHP et JS : maîtrisez la méthode de création de graphiques en bougies boursières

Qu'est-ce que l'objet Request en PHP ? Qu'est-ce que l'objet Request en PHP ? Feb 27, 2024 pm 09:06 PM

Qu'est-ce que l'objet Request en PHP ?

Comment créer un graphique en chandeliers boursiers en utilisant PHP et JS Comment créer un graphique en chandeliers boursiers en utilisant PHP et JS Dec 17, 2023 am 08:08 AM

Comment créer un graphique en chandeliers boursiers en utilisant PHP et JS

Comment convertir le tableau de résultats d'une requête MySQL en objet ? Comment convertir le tableau de résultats d'une requête MySQL en objet ? Apr 29, 2024 pm 01:09 PM

Comment convertir le tableau de résultats d'une requête MySQL en objet ?

Quelle est la différence entre les tableaux et les objets en PHP ? Quelle est la différence entre les tableaux et les objets en PHP ? Apr 29, 2024 pm 02:39 PM

Quelle est la différence entre les tableaux et les objets en PHP ?

La relation entre js et vue La relation entre js et vue Mar 11, 2024 pm 05:21 PM

La relation entre js et vue

See all articles