Herança em JavaScript com 프로토타입 e 함수
5711 단어 programmingbeginnersjavascript
O javascript disponibiliza a palavra chave class - a palavra-chave class foi introduzida no ES2015, mas é syntax sugar, o JavaScript permanece baseado em prototype - para declarar classes e extends para fazer herança. Nesse post irei는 abordagem function e prototype para detalhar o processo de herança e prototype chain을 사용합니다.
프로토타입 체인(Processo de pesquisa nos prototype)
No javascript quando vamos acessar uma propriedade de um objeto o motor do javascript vai verificar se existe essa propriedade no objeto e caso não encontre i*rá procurar no prototype do objeto* e se também não encontrar irá procurar no prototype do prototype e assim por diante passando por todas as instâncias que foram herdadas até chegar ao último 프로토타입. Caso não encontre o JS irá retornar undefined.
Para acessar as informações do prototype utilizamos
__proto__
e com ele podemos acessar informações de outros prototypes acima(mais genéricos).Vejamos o seguinte example onde temos três objetos em que a classe mais baixa Diretor herda características de Professor e Funcionário:
function Funcionario() {}
Funcionario.prototype.salario = () => 'R$ 10000'
function Professor() {}
Professor.prototype = Object.create(Funcionario.prototype)
Professor.prototype.horaExtra = () => 'R$ 500'
function Diretor() {}
Diretor.prototype = Object.create(Professor.prototype)
Diretor.prototype.bonus = () => 'R$ 2000'
Agora vamos inicializar o objeto Diretor e acessar o método salario() que foi herdado:
const diretor = new Diretor();
console.log(diretor.salario()); //output => 'R$ 10000'
Isso foi possível porque quando chamamos o método salario() o motor do javascript verificou se esse método existia no prototype de Diretor e como não encontrou foi "subindo"passando de prototype em prototype até encontar o metodo no prototype de Funcionario.
Utilize
__proto__
e veja a cadeia de prototype (prototype chain) através instância mais baixa que é 감독:console.log(diretor.__proto__) //output => prototype Diretor
console.log(diretor.__proto__.__proto__) //output => prototype Professor
console.log(diretor.__proto__.__proto__.__proto__) //output => prototype Funcionario
결론
É muito Importante entender bem "herança de protótipo"no javascript para escrever códigos complexos. Evite que sua cadeia de protótipos seja grande e quebre a cadeia caso necessário para evitar problemas de performance.
Reference
이 문제에 관하여(Herança em JavaScript com 프로토타입 e 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/welingtoncassis/heranca-em-javascript-com-prototype-e-function-35lf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)