-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path07-relebrando-prototypes-prototype-chain.js
More file actions
30 lines (23 loc) · 1.09 KB
/
07-relebrando-prototypes-prototype-chain.js
File metadata and controls
30 lines (23 loc) · 1.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Função construtora A (superclasse)
function A() {}
// Adiciona um método ao prototype de A
// Isso significa que todas as instâncias de A (ou de quem herdar A)
// terão acesso a esse método via protótipo
A.prototype.methodA = function () {
console.log("Método da classe A");
};
// Função construtora B (subclasse)
function B() {}
// Aqui ocorre a herança de protótipo:
// Define que B.prototype será um novo objeto que herda de A.prototype.
// Isso faz com que todas as instâncias de B também "vejam" os métodos da A.
B.prototype = Object.create(A.prototype);
// Por padrão, após a linha acima, B.prototype.constructor se torna A.
// Então aqui reatribuímos corretamente o construtor de volta para B.
B.prototype.constructor = B;
// Criamos uma instância de B
const b = new B();
// instanceof verifica se `b` herda da função construtora B
console.log(b instanceof B); // true → b foi criado com `new B()`
// instanceof verifica se `b` herda de A também, por causa da cadeia de protótipos
console.log(b instanceof A); // true → porque `B.prototype` herda de `A.prototype`