Continuando os estudos de JavaScript, passei a parte de Orientação a Objetos no freeCodeCamp.
Essa parte me deixou meio “confuso” principalmente por que estou lendo a série e livros “You Don’t Know JS” que meio que vai contra essa idéia de usar “orientação a objetos” em JS, já que no JS você não tem herança, polimorfismo e etc.
No JavaScript, você não precisa de criar classes e herda-las, mas sim, simplesmente fazer uma cópia do objeto que precisa com Object.create()
.
Ainda vou ter que explorar melhor esses conceitos…
JavaScript: Objetos são feitos de?
Propriedades
JavaScript: Como se acessa uma propriedade “prop
” de um objeto “obj
“?
obj.prop
JavaScript: Como se chama uma função dentro de um objeto?
Um método
JavaScript: Como se declara um método “meuMetodo
” dentro do objeto “obj
“?
let obj = { meuMetodo: function() { ... } }
JavaScript: Funções que setam variáveis internas de um objeto são chamadas de?
Construtoras
JavaScript: Um objeto é criado/instanciado com qual keyword?
new, ex: hound = new Dog();
JavaScript: Como se verifica se um objeto é uma instância de um construtor/classe?
instanceof, ex: obj instanceof constructor
JavaScript: Como se define uma propriedade/método para todas as instâncias de um construtor/classe?
Usando prototype, como em, Dog.prototype.numLegs = 4;
JavaScript: O que a propriedade constructor
de um objeto retorna?
Ela retorna o nome do objeto que deu origem ao objeto que você está pesquisando.
JavaScript: Como se altera o prototype
de um objeto?
Obj.prototype = { ... }
JavaScript: Quando você muda o prototype
de um objeto, qual propriedade deve ser setada novamente?
constructor
JavaScript: Qual função verifica se um prototype
vem de uma classe/objeto?
isPrototypeOf
JavaScript: No código
function Bird(name) {
this.name = name;
}
let duck = new Bird("Donald");
Qual é o supertype de duck?
Bird
JavaScript: Como é chamado o objeto/função/classe-pai?
supertype
JavaScript: Como é chamado a variável que herda de um objeto/função/classe?
subtype
JavaScript: Qual a maneira de se criar um objeto para ser herdado?
Object.create(Obj.prototype);
JavaScript: Como se cria um objeto “Dog” que herda as propriedades do objeto “Animal”?
Dog.prototype = Object.create(Animal.prototype);
JavaScript: Como um “ChildObject” herda os métodos de um “ParentObject”?
ChildObject.prototype = Object.create(ParentObject.prototype);
JavaScript: O que é um mixin?
É uma função que recebe um objeto e seta um método para ele, podendo ser usando em vários objetos. ex: função fly sendo usando nos objetos, airplane e bird.
JavaScript: Como se declara uma variável privada dentro de um objeto?
Não se declara a variável com this.
JavaScript: Um método dentro de um objeto tem acesso a uma variável privada?
Sim, isso se chama closure.