Maison interface Web js tutoriel 基于JavaScript实现继承机制之原型链(prototype chaining)的详解_javascript技巧

基于JavaScript实现继承机制之原型链(prototype chaining)的详解_javascript技巧

May 16, 2016 pm 05:34 PM
原型链

如果用原型方式重定义前面例子中的类,它们将变为下列形式:

复制代码 代码如下:

function ClassA() {
}

ClassA.prototype.color = "blue";
ClassA.prototype.sayColor = function () {
    alert(this.color);
};

function ClassB() {
}

ClassB.prototype = new ClassA();


原型方式的神奇之处在于最后一行代码。这里,把 ClassB 的 prototype 属性设置成 ClassA 的实例。这很有意思,因为想要 ClassA 的所有属性和方法,但又不想逐个将它们 添加到ClassB 的 prototype 属性。还有比把 ClassA 的实例赋予 prototype 属性更好的方法吗?

注意:调用 ClassA 的构造函数,没有给它传递参数。这在原型链中是标准做法。要确保构造函数没有任何参数。

与对象冒充相似,子类的所有属性和方法都必须出现在 prototype 属性被赋值后,因为在它之前赋值的所有方法都会被删除。为什么?因为 prototype 属性被替换成了新对象,添加了新方法的原始对象将被销毁。所以,为 ClassB 类添加 name 属性和 sayName() 方法的代码如下:

复制代码 代码如下:

function ClassB() {
}

ClassB.prototype = new ClassA();

ClassB.prototype.name = "";
ClassB.prototype.sayName = function () {
    alert(this.name);
};


可通过运行下面的例子测试这段代码:
复制代码 代码如下:

var objA = new ClassA();
var objB = new ClassB();
objA.color = "blue";
objB.color = "red";
objB.name = "John";
objA.sayColor();
objB.sayColor();
objB.sayName();

此外,在原型链中,instanceof 运算符的运行方式也很独特。对 ClassB 的所有实例,instanceof 为 ClassA 和 ClassB 都返回 true。例如:
复制代码 代码如下:

var objB = new ClassB();
alert(objB instanceof ClassA);    //输出 "true"
alert(objB instanceof ClassB);    //输出 "true"

在 ECMAScript 的弱类型世界中,这是极其有用的工具,不过使用对象冒充时不能使用该方法判断。但是由于子类的原型被直接重新赋值,所以出现以下这种情况:
复制代码 代码如下:

console.log(objB.__proto__===objB.constructor.prototype)   //false

因为ClassB的原型链 prototype 属性被另一个类的对象重写了。输出结果可以看出objB.__proto__仍然指向的是ClassB.prototype,而不是objB.constructor.prototype。这也很好理解,给Person.prototype赋值的是一个对象直接量new ClassA()实例,使用对象直接量方式定义的对象其构造器(constructor)指向的是根构造器Object,Object.prototype是一个空对象{},{}自然与ClassB.prototype不等。
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

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)

Que sont les prototypes et les chaînes de prototypes Que sont les prototypes et les chaînes de prototypes Nov 09, 2023 pm 05:59 PM

Prototype, un objet en js, est utilisé pour définir les propriétés et les méthodes d'autres objets. Chaque constructeur a un attribut prototype est un pointeur pointant vers un objet prototype. Lorsqu'un nouvel objet est créé, le nouvel objet sera Le. L'attribut prototype de son constructeur hérite des propriétés et des méthodes. Chaîne de prototypes, en essayant d'accéder aux propriétés d'un objet, js vérifiera d'abord si l'objet possède cette propriété. Sinon, alors js se tournera vers le prototype de l'objet. Si l'objet prototype n'a pas cette propriété, il le fera. continuez à chercher le prototype du prototype.

Qu'est-ce que la chaîne de portée et la chaîne de prototypes ? Qu'est-ce que la chaîne de portée et la chaîne de prototypes ? Nov 13, 2023 pm 01:46 PM

La chaîne de portée et la chaîne de prototypes sont deux concepts importants en JavaScript, correspondant respectivement aux deux caractéristiques principales de la portée et de l'héritage : 1. La chaîne de portée est un mécanisme utilisé pour gérer l'accès aux variables et la portée en JavaScript. Elle est formée par Elle est déterminée par le. contexte d'exécution et portée lexicale dans laquelle la fonction est créée ; 2. La chaîne de prototypes est un mécanisme d'implémentation de l'héritage en JavaScript basé sur la relation prototype entre les objets, lors de l'accès aux propriétés ou aux méthodes d'un objet, si l'objet lui-même ne le fait pas. La définition sera recherchée tout au long de la chaîne des prototypes.

Quelle est la différence entre un prototype et une chaîne de prototypes Quelle est la différence entre un prototype et une chaîne de prototypes Nov 09, 2023 pm 04:48 PM

La différence entre un prototype et une chaîne de prototypes est la suivante : 1. Le prototype est un attribut que possède chaque objet, y compris certains attributs et méthodes partagés, qui est utilisé pour réaliser le partage et l'héritage des attributs et des méthodes entre les objets, tandis que la chaîne de prototypes est un héritage. Le mécanisme est mis en œuvre via la relation prototype entre les objets, qui définit la relation d'héritage entre les objets afin que les objets puissent partager les propriétés et les méthodes de l'objet prototype. 2. La fonction du prototype est de définir les propriétés et méthodes partagées de l'objet, afin que plusieurs objets puissent partager les propriétés et les méthodes du même objet prototype, et que la fonction de la chaîne de prototypes est de réaliser la relation d'héritage entre les objets, etc.

A quoi servent les prototypes et les chaînes de prototypes ? A quoi servent les prototypes et les chaînes de prototypes ? Jan 13, 2024 pm 12:58 PM

La raison pour laquelle les prototypes et les chaînes de prototypes existent est d'implémenter l'héritage et le partage des propriétés des objets dans le langage JavaScript. En JavaScript, tout est objet, y compris les fonctions. Chaque objet possède une propriété, appelée prototype, qui pointe vers un autre objet, appelé objet prototype. Les objets peuvent hériter des propriétés et des méthodes des objets prototypes. L'avantage de l'implémentation de propriétés et de méthodes partagées via des prototypes est l'économie de mémoire. Considérons un objet A, qui possède des propriétés et des méthodes, puis créez l'objet B et créez

Quelle est la chaîne de prototypes dans es6 Quelle est la chaîne de prototypes dans es6 Nov 15, 2022 pm 07:28 PM

La chaîne prototype, au sens simple, est une chaîne composée de prototypes. Lors de l'accès à un attribut d'un objet, il recherchera d'abord l'attribut de l'objet lui-même. S'il n'est pas trouvé, il recherchera son prototype implicite __proto__, c'est-à-dire le prototype de son constructeur. pourtant, il recherchera ensuite dans le __proto__ du prototype du constructeur. De cette façon, la recherche vers le haut couche par couche formera une structure de chaîne, appelée chaîne de prototypes.

Discussion approfondie : Analyse du rôle des prototypes et des chaînes de prototypes dans la programmation orientée objet Discussion approfondie : Analyse du rôle des prototypes et des chaînes de prototypes dans la programmation orientée objet Jan 11, 2024 am 11:59 AM

Analyse approfondie : le rôle du prototype et de la chaîne de prototypes dans la programmation orientée objet nécessite des exemples de code spécifiques. Dans la programmation orientée objet (POO), le prototype (Prototype) et la chaîne de prototypes (PrototypeChain) sont des concepts importants. Ils fournissent un mécanisme de réutilisation de code basé sur les objets et jouent un rôle clé dans des langages tels que Javascript. Dans cet article, nous approfondirons les concepts de prototypes et de chaînes de prototypes, explorerons leur rôle dans la POO et illustrerons avec des exemples de code concrets.

Quelles sont les fonctions du prototype js et de la chaîne de prototypes Quelles sont les fonctions du prototype js et de la chaîne de prototypes Nov 09, 2023 pm 04:56 PM

La fonction du prototype js et de la chaîne de prototypes est de réaliser l'héritage des objets, d'économiser de l'espace mémoire et d'améliorer les performances et la maintenabilité du code. Introduction détaillée : 1. Implémenter l'héritage d'objets. Le prototype et la chaîne de prototypes vous permettent de créer un objet et d'hériter des propriétés et des méthodes d'un autre objet. Lorsque vous créez un nouvel objet, vous pouvez pointer son prototype vers un autre objet, de sorte que. le nouvel objet L'objet peut accéder aux propriétés et aux méthodes de l'objet prototype ; 2. Économiser de la mémoire et améliorer les performances. En JavaScript, chaque objet a un prototype, les objets peuvent partager des prototypes, etc.

Explorez les particularités des prototypes et des chaînes de prototypes Explorez les particularités des prototypes et des chaînes de prototypes Jan 13, 2024 pm 03:50 PM

Explorer les caractéristiques uniques du prototype et de la chaîne de prototypes En JavaScript, le prototype et la chaîne de prototypes sont des concepts très importants. Comprendre les caractéristiques uniques des prototypes et des chaînes de prototypes peut nous aider à mieux comprendre l'héritage et la création d'objets en JavaScript. Un prototype est une propriété appartenant à chaque objet en JavaScript qui pointe vers un autre objet et est utilisée pour partager des propriétés et des méthodes. Chaque objet JavaScript a un prototype

See all articles