Na vida real, um carro é um objeto.
Um carro tem propriedades como peso e cor, e métodos como iniciar e parar:
Object | Properties | Methods |
---|---|---|
car.name = Fiat car.model = 500 car.weight = 850kg car.color = white |
car.start() car.drive() car.brake() car.stop() |
Todos os carros têm as mesmas propriedades, mas os valores das propriedades diferem de carro para carro.
Todos os carros têm os mesmos métodos, mas os métodos são executados em momentos diferentes.
Você já aprendeu que variáveis JavaScript são contêineres para valores de dados.
Este código atribui um valor simples (Fiat) a uma variável chamada carro:
let car = "Fiat";
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Variables</h2>
<p id="demo"></p>
<script>
// Create and display a variable:
let car = "Fiat";
document.getElementById("demo").innerHTML = car;
</script>
</body>
</html>
Objetos também são variáveis. Mas os objetos podem conter muitos valores.
Este código atribui muitos valores (Fiat, 500, branco) a um variável carro nomeado:
const car = {type:"Fiat", model:"500", color:"white"};
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p id="demo"></p>
<script>
// Create an object:
const car = {type:"Fiat", model:"500", color:"white"};
// Display some data from the object:
document.getElementById("demo").innerHTML = "The car type is " + car.type;
</script>
</body>
</html>
Os valores são escritos como pares nome:valor (nome e valor separados por um cólon).
É uma prática comum declarar objetos com a palavra-chave const.
Saiba mais sobre como usar const com objetos no capítulo: JS Const.
Você define (e cria) um objeto JavaScript com um objeto literal:
const person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p id="demo"></p>
<script>
// Create an object:
const person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
// Display some data from the object:
document.getElementById("demo").innerHTML =
person.firstName + " is " + person.age + " years old.";
</script>
</body>
</html>
Espaços e quebras de linha não são importantes. Uma definição de objeto pode abranger várias linhas:
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p id="demo"></p>
<script>
// Create an object:
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
// Display some data from the object:
document.getElementById("demo").innerHTML =
person.firstName + " is " + person.age + " years old.";
</script>
</body>
</html>
Os pares nome:valores em objetos JavaScript são chamados de propriedades:
John
Corça
50
azul
Você pode acessar as propriedades do objeto de duas maneiras:
objectName.propertyName
ou
objectName["propertyName"]
person.lastName;
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p>There are two different ways to access an object property.</p>
<p>You can use person.property or person["property"].</p>
<p id="demo"></p>
<script>
// Create an object:
const person = {
firstName: "John",
lastName : "Doe",
id : 5566
};
// Display some data from the object:
document.getElementById("demo").innerHTML =
person.firstName + " " + person.lastName;
</script>
</body>
</html>
person["lastName"];
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p>There are two different ways to access an object property.</p>
<p>You can use person.property or person["property"].</p>
<p id="demo"></p>
<script>
// Create an object:
const person = {
firstName: "John",
lastName : "Doe",
id : 5566
};
// Display some data from the object:
document.getElementById("demo").innerHTML =
person["firstName"] + " " + person["lastName"];
</script>
</body>
</html>
Objetos JavaScript são contêineres para valores nomeadoschamados de propriedades.
Os objetos também podem ter métodos.
Métodos são ações que podem ser executadas em objetos.
Os métodos são armazenados em propriedades como função definições.
John
Corça
50
azul
function() {return this.firstName + " " + this.lastName;}
Um método é uma função armazenada como uma propriedade.
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
No exemplo acima, isto
refere-se ao objeto pessoa.
I.E. this.firstName significa a propriedade firstName de this.
I.E. this.firstName significa a propriedade firstName de person.
Em JavaScript, a palavra-chave this
refere-se a um objeto.
Qual objeto depende de como este
está sendo invocado (usado ou chamado).
A palavra-chave this
refere-se a diferentes objetos dependendo de como é usada:
Em um método de objeto, this
refere-se ao objeto.
Sozinho, isto
refere-se ao objeto global.
Em uma função, this
refere-se ao objeto global.
Em uma função, no modo estrito, isso
é indefinido
.
Em um evento, this
refere-se ao elemento que recebeu o evento.
Métodos como call()
, apply()
e bind()
pode referir isto
a qualquer objeto.
isso
não é uma variável. É uma palavra-chave. Você não pode alterar o valor de isto
.
O tutorial de JavaScript este
Em uma definição de função, this
refere-se ao "proprietário" da função.
No exemplo acima, este
é o objeto pessoa que "possui" o Função nome completo
.
Em outras palavras, this.firstName
significa a propriedade firstName
de este objeto.
Saiba mais sobre isto
no JavaScript deste tutorial.
Você acessa um método de objeto com a seguinte sintaxe:
objectName.methodName()
name = person.fullName();
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p>An object method is a function definition, stored as a property value.</p>
<p id="demo"></p>
<script>
// Create an object:
const person = {
firstName: "John",
lastName: "Doe",
id: 5566,
fullName: function() {
return this.firstName + " " + this.lastName;
}
};
// Display data from the object:
document.getElementById("demo").innerHTML = person.fullName();
</script>
</body>
</html>
Se você acessar um método sem os parênteses(), ele retornará a definição da função:
name = person.fullName;
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Objects</h2>
<p>If you access an object method without (), it will return the function definition:</p>
<p id="demo"></p>
<script>
// Create an object:
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
// Display data from the object:
document.getElementById("demo").innerHTML = person.fullName;
</script>
</body>
</html>
Quando uma variável JavaScript é declarada com a palavra-chave "new
", a variável é criado como um objeto:
x = new String(); // Declares x as a String object
y = new Number(); // Declares y as a Number object
z = new Boolean(); // Declares z as a Boolean object
Evite objetos String
, Número
e Booleanos
. Eles complicam seu código e tornam seu código mais lento velocidade de execução.
Você aprenderá mais sobre objetos posteriormente neste tutorial.