Classes
this
Objetos não contem um escopo próprio.
Fazendo dessa forma, o this referencia o window, que é escopo global.
Arrow functions não se conectam com o this da mesma forma que function declaration.
const person = {
name: "Nicollas",
getName: () => {
return this.name
}
}
console.log(person.getName()) // undefined
Fazendo assim, funciona corretamente
const person = {
name: "Nicollas",
getName: function() {
return this.name
}
}
console.log(person.getName()) // Nicollas
Evitando o this
const person = {
name: "Nicollas",
getName: () => person.name
}
console.log(person.getName())
Prototype
Em JavaScript, quando um objeto é criado, ele possui automaticamente uma propriedade que referencia um outro objeto. Esse outro objeto é chamado de prototype. Todo objeto em JavaScript herda propriedades e métodos do seu prototype ascendente. Ou seja, o objeto acessa propriedades e métodos do seu protótipo ascendente. Essas propriedades não pertencem ao objeto em si, mas sim ao prototype do objeto.
Desestruturação de objetos
const person = {
name: 'Nicollas',
age: 26
}
const { age } = person
console.log(age) // 26
Se quiser renomear, pode-se utilizar:
const { age: idade } = person
console.log(idade) // 26
JSON
{
"nome": Nicollas,
"idade": 26,
"hobbies": ["Academia", "Ler"],
"estudaJavascript": true
}
POO
class Person {
constructor(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
}
const person = new Person('Joao', 'Da silva', 23);
console.log(person); // Person { firstName: 'Joao', lastName: 'Da silva', age: 23 }
super, constructor, extends
class Animal {
constructor(name) {
this.name = name
}
speak() {
console.log(`${this.name} made some noise`);
}
}
class Cat extends Animal {
constructor(name) {
super(name);
}
}
const cat = new Cat('Ari');
cat.speak();
static
class Person {
static speak() {
console.log('Hello World!');
}
}
Person.speak(); // Hello World!
get/set
Last updated
Was this helpful?