JavaScript Objects
Em JavaScript, os objetos são rei. Se você entender objetos, você entende JavaScript.
Em JavaScript, quase "tudo" é um objeto.
- Booleans podem ser objetos (ou dados primitivos tratados como objetos)
- Numbers podem ser objetos (ou dados primitivos tratados como objetos)
- Strings podem ser objetos (ou dados primitivos tratados como objetos)
- Dates são sempre objetos
- Maths são sempre objetos
- Regular expressões são sempre objetos
- Arrays são sempre objetos
- Functions são sempre objetos
- Objects são objetos
Em JavaScript, todos os valores, exceto valores primitivos, são objetos.
Valores primitivos são: cordas ("John Doe") , números (3.14), true, false, null e undefined .
Objetos são variáveis contendo Variáveis
variáveis JavaScript pode conter valores individuais:
Objetos são variáveis também. Mas os objetos podem conter muitos valores.
Os valores são escritos como nome: valor pares (nome e valor separados por dois pontos).
Exemplo
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
Tente você mesmo " Um objeto JavaScript é um conjunto de valores nomeados
Propriedades do objeto
Os valores nomeados, em objetos JavaScript, são chamados de propriedades.
Propriedade | Valor |
---|---|
firstName | John |
lastName | Doe |
age | 50 |
eyeColor | blue |
Objetos escritos como pares de valores de nomes são semelhantes:
- arrays associativos em PHP
- Dicionários em Python
- As tabelas de hash em C
- mapas hash em Java
- Hashes em Ruby e Perl
Métodos de objeto
Os métodos são ações que podem ser executadas em objetos.
As propriedades do objeto pode ser ambos os valores primitivos, outros objetos e funções.
Um método de objeto é uma propriedade do objeto que contém uma definição de função.
Propriedade | Valor |
---|---|
firstName | John |
lastName | Doe |
age | 50 |
eyeColor | blue |
fullName | function() {return this.firstName + " " + this.lastName;} |
objetos JavaScript são recipientes para valores nomeados, chamados propriedades e métodos.
Você vai aprender mais sobre métodos nos próximos capítulos.
Criando um objeto JavaScript
Com JavaScript, você pode definir e criar seus próprios objetos.
Existem maneiras diferentes para criar novos objetos:
- Definir e criar um único objeto, usando um objeto literal.
- Definir e criar um único objeto, com a palavra chave nova.
- Definir um construtor do objeto, em seguida, criar objetos do tipo construído.
Em ECMAScript 5, um objecto pode também ser criado com a função Object.create() .
Usando um Objeto Literal
Esta é a maneira mais fácil de criar um objeto de JavaScript.
Usando um objeto literal, você quer definir e criar um objeto em um comunicado.
Um literal de objeto é uma lista de pares nome: valor (como age:50 ) dentro de chaves {} .
O exemplo a seguir cria um novo objeto JavaScript com quatro propriedades:
Exemplo
var
person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
Tente você mesmo " Espaços e quebras de linha não são importantes. Uma definição de objeto pode ocupar várias linhas:
Exemplo
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
Tente você mesmo " Usando o novo JavaScript Keyword
O exemplo a seguir também cria um novo objeto JavaScript com quatro propriedades:
Exemplo
var
person = new Object();
person.firstName = "John";
person.lastName = "Doe";
person.age = 50;
person.eyeColor = "blue";
Tente você mesmo " Os dois exemplos acima fazem exatamente a mesma. Não há necessidade de usar new Object() .
Por simplicidade, legibilidade e velocidade de execução, use o primeiro (o método literal de objeto).
Usando um construtor do objeto
Os exemplos acima são limitados em muitas situações. Eles só criar um único objeto.
Às vezes a gente gostaria de ter um "tipo de objeto" que pode ser usado para criar muitos objetos de um tipo.
A maneira padrão para criar um "tipo de objeto" é a utilização de uma função de objeto construtor:
Exemplo
function person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
var
myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");
Tente você mesmo " A função acima (pessoa) é um construtor do objeto.
Depois de ter um construtor do objeto, você pode criar novos objetos do mesmo tipo:
var myFather = new person("John", "Doe", 50, "blue");
var myMother = new person("Sally", "Rally", 48, "green");
A this palavra-chave
Em JavaScript, a coisa chamada this , é o objeto que "possui" o código JavaScript.
O valor de this , quando utilizado em uma função, é o objecto que "possui" a função.
O valor de this , quando usado num objecto, o objecto é em si.
A this palavra-chave em um construtor de objeto não tem um valor. É apenas um substituto para o novo objeto.
O valor de this se tornará o novo objeto quando o construtor é usado para criar um objeto.
Note-se que esta não é uma variável. É uma palavra-chave. Você não pode alterar o valor do this .
Built-in JavaScript Construtores
JavaScript tem construtores internos para objetos nativos:
Exemplo
var x1 = new Object(); // A new Object object
var x2 = new String(); // A new String object
var x3 = new Number(); // A new Number object
var x4 = new Boolean() // A new Boolean object
var x5 = new Array(); // A new Array object
var x6 = new RegExp(); // A new RegExp object
var x7 = new Function(); // A new Function object
var x8 = new Date(); // A new Date object
Tente você mesmo " O Math() objeto não está na lista. Math é um objeto global. A nova palavra-chave não pode ser usado em matemática.
Você sabia?
Como você pode ver, JavaScript tem objeto versões dos tipos de dados primitivos String, número e booleanas.
Não há nenhuma razão para criar objetos complexos. valores primitivos executar muito mais rápido.
E não há razão para usar nova Array() . Use literais de matriz em vez disso: []
E não há razão para usar nova RegExp() . Use literais padrão em vez disso: /()/
E não há razão para usar a nova Function() . Use expressões de função em vez disso: function () {} .
E não há razão para usar new Object() . Use literais de objeto em vez disso: {}
Exemplo
var x1 = {}; // new object
var x2 = ""; // new primitive string
var x3 = 0; // new primitive number
var x4 = false; // new primitive boolean
var x5 = []; // new array object
var x6 = /()/ // new regexp object
var x7 = function(){}; // new function object
Tente você mesmo " JavaScript objetos são mutáveis
Objetos são mutáveis: Eles são abordados por referência, não por valor.
Se y é um objeto, a seguinte instrução não vai criar uma cópia de y:
var x = y; // This will not create a copy of y.
O objeto x não é uma cópia do y. É y. X e Y aponta para o mesmo objeto.
Quaisquer alterações à y também mudará x, porque x e y são o mesmo objeto.
Exemplo
var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}
var x = person;
x.age = 10; // This will change both x.age and person.age
Tente você mesmo "