基于JavaScript实现继承机制之原型链(prototype chaining)的详解_javascript技巧
如果用原型方式重定义前面例子中的类,它们将变为下列形式:
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不等。

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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.

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.

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

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.

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.

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.

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
