36 Matching Annotations
- Oct 2023
-
developer.mozilla.org developer.mozilla.org
-
Por exemplo, ao usar métodos como Array.prototype.map()o que retorna o construtor padrão, você deseja que esses métodos retornem um Arrayobjeto pai, em vez do MyArrayobjeto. O Symbol.speciessímbolo permite
-
Você pode querer retornar Arrayobjetos em sua classe de array derivada MyArray. O padrão
-
Qualquer valor passado
-
O Object()construtor faz casos especiais do cenário de subclasse. Se for chamado implicitamente via super(), ele sempre
-
A única diferença de não escrever extendsnada é que o próprio construtor
No entanto
-
Subclasses abstratas ou mix-ins são modelos para classes. Uma classe só pode ter
Portanto
A funcionalidade
-
Uma função com uma superclasse como entrada e uma subclasse estendendo essa superclasse como saída pode
-
A herança é um relacionamento de acoplamento muito forte na programação orientada a objetos. Isso significa
-
Podemos contornar isso usando um sinalizador privado para indicar se a instância está sendo construída. No entanto, um problema mais significativo com esse projeto é que ele quebra
Que afirma
-
A herança muitas vezes leva ao problema do círculo-elipse , porque nenhum tipo
Em geral
-
Composição significa que uma classe
-
Nesse caso, a ReadOnlyMapclasse não é uma subclasse de Map, mas ainda implementa a maioria dos mesmos métodos. Isso significa mais duplicação de código, mas também significa que a ReadOnlyMapclasse não está fortemente acoplada à Mapclasse e não é facilmente interrompida
-
Por exemplo, se a Mapclasse adicionar um emplace()método que não chama set(), isso fará com que a ReadOnlyMapclasse não seja mais somente leitura, a menos
-
Todos os objetos JavaScript herdam
-
As classes não podem estender objetos regulares (não construíveis). Se você deseja herdar de um objeto regular
-
Em vez disso, você precisa retornar
-
No entanto, devido a decisões incertas sobre se super()deve ser chamado dentro do construtor, não é possível
-
extends nullfoi projetado para permitir
-
Portanto, uma maneira melhor de estender os built-ins
-
Qualquer adição de novos métodos na classe base também pode
-
Se você deseja criar subclasses de built-ins enquanto alcança as expectativas acima, você precisa
-
Novos métodos internos sempre constroem a classe base e chamam
-
Esses problemas não são exclusivos de classes internas. Para suas próprias classes, você provavelmente terá que tomar as mesmas decisões. No entanto, para classes internas
-
No entanto, as expectativas acima exigem esforços não triviais para serem implementadas adequadamente.
-
Aqui estão algumas coisas que você pode esperar ao estender uma classe:
-
Se o construtor da classe pai retornar um objeto, esse objeto será usado como
Esse truque é chamado
-
Enquanto a classe base pode retornar qualquer coisa de seu construtor, a classe derivada
-
O thisvalor na extendsexpressão está
-
O lado direito de extendsnão precisa ser um identificador. Você pode usar
Isso geralmente é útil
-
extendsdefine o protótipo para ambos ChildClasse ChildClass.prototype.
-
A prototypepropriedade do ParentClassdeve
-
As duas condições devem ser válidas — por exemplo, funções vinculadas e Proxypodem ser construídas, mas não têm uma prototypepropriedade, portanto
-
A extendspalavra-chave pode ser usada para criar
Bem como
-
Qualquer construtor que possa ser chamado newe tenha a prototypepropriedade
-
A extendspalavra-chave é usada em
Para
-
- Oct 2022
-
developer.mozilla.org developer.mozilla.org
-
Number()
-