//Cadeia de protótipos (prototype chain)
Object.prototype.atr0 = 'Z'
const avo = {atr1: "A"}
const pai = {__proto__: avo, atr2: 'B'}
const filho = {__proto__: pai, atr3: 'C'}
console.log(filho.atr1);//procura no atributo atr1 o protótipo de filho
console.log(filho.atrX);//indefinido = null
console.log(filho.atr0);//procura em objeto do atributo atr0
console.log(filho.atr0, filho.atr1, filho.atr2, filho.atr3);
console.log(pai.atr3);//nulo
const teste = {__proto__: avo, atr2:'K', atr3: 'Y'}
console.log(filho.atr0, filho.atr1, filho.atr2, filho.atr3);
const carro = {
velAtual: 0,
veloMax: 200,
aceleraMais(delta){
if(this.velAtual + delta <= this.veloMax){
this.velAtual += delta
}else{
this.velAtual = this.veloMax
}
},
status(){
return `${this.velAtual} Km/h de ${this.veloMax}`
}
}
const ferrari = {
modelo: 'F50',
velMax: 324//shadowing (sombreamento)
}
const volvo = {
modelo: 'V40 vue',
status(){
return `${this.modelo}: ${super.status()}`
}
}
//1° Objeto , 2° um protótipo
Object.setPrototypeOf(ferrari, carro)//ferrari tem carro como protótipo
Object.setPrototypeOf(volvo, carro)
console.log(ferrari,'\n');
console.log(volvo,'\n');
volvo.aceleraMais(100)
console.log(volvo.status(),'\n');
ferrari.aceleraMais(300)
console.log(ferrari.status());
Nenhum comentário:
Postar um comentário