Construtores de Objetos JavaScript
- Página Anterior Acessadores de Objetos JS
- Próxima Página Protótipos de Objetos JS
Exemplo
function Pessoa(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
O hábito de nomear o construtor com letras maiúsculas é uma boa prática.
tipo de objeto (esquema) (classe)
O exemplo do capítulo anterior é limitado. Eles apenas criam um único objeto.
Às vezes precisamos criar muitos objetos do mesmo "esquema”.
Um método para criar um "tipo de objeto" é usarfunção construtora do objeto。
No exemplo acima,função Pessoa() é a função construtora do objeto.
através de new A chamada da palavra-chave de construtor pode criar objetos do mesmo tipo:
var meuPai = new Pessoa("Bill", "Gates", 62, "azul"); var minhaMãe = new Pessoa("Steve", "Jobs", 56, "verde");
this palavra-chave
No JavaScript, chamado this
o que possui coisas é o código.
this
no uso, é o próprio objeto.
No construtor de função,this
É um valor nulo. É o substituto do novo objeto. Quando um novo objeto é criado, o valor de this se torna esse novo objeto.
Atenção this
Não é uma variável. É uma palavra-chave. Você não pode mudar o valor de this.
Adicionar atributos ao objeto
Adicionar novos atributos a um objeto existente é simples:
Exemplo
myFather.nationality = "English";
O novo atributo foi adicionado a myFather. Não a myMother, nem a qualquer outro objeto person.
Adicionar métodos ao objeto
Adicionar novos métodos a um objeto existente é simples:
Exemplo
myFather.name = function () { return this.firstName + " " + this.lastName; };
O novo método foi adicionado a myFather. Não a myMother, nem a qualquer outro objeto person.
Adicionar atributos ao construtor
Diferente de adicionar novos atributos a um objeto existente, você não pode adicionar novos atributos a um construtor de objeto:
Exemplo
Person.nationality = "English";
Para adicionar um novo atributo ao construtor, você deve adicioná-lo à função construtora:
Exemplo
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.nationality = "English"; }
Desta forma, as propriedades do objeto podem ter valores padrão.
Adicionar métodos ao construtor
Seu construtor de função também pode definir métodos:
Exemplo
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.name = function() {return this.firstName + " " + this.lastName;}; }
Diferente de adicionar novos métodos a um objeto existente, você não pode adicionar novos métodos a um construtor de objeto.
É necessário adicionar métodos a um objeto dentro da função construtora:
Exemplo
function Person(firstName, lastName, age, eyeColor) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.eyeColor = eyeColor; this.changeName = function (name) { this.lastName = name; }; }
A função changeName() atribui o valor de name ao atributo lastName da pessoa.
Agora você pode tentar:
myMother.changeName("Jobs");
usando myMother
Substitua por this,O JavaScript pode saber qual pessoa está sendo tratada atualmente.
Construtores de JavaScript internos
O JavaScript oferece construtores para objetos primitivos:
Exemplo
var x1 = new Object(); // Um novo objeto Object var x2 = new String(); // Um novo objeto String var x3 = new Number(); // Um novo objeto Number var x4 = new Boolean(); // Um novo objeto Boolean var x5 = new Array(); // Um novo objeto Array var x6 = new RegExp(); // Um novo objeto RegExp var x7 = new Function(); // Um novo objeto Function var x8 = new Date(); // Um novo objeto Date
Math()
Objetos não estão nessa lista. Math é um objeto global.new
Palavras-chave não podem ser usadas no Math.
Você sabia?
Como visto acima, o JavaScript oferece versões de objetos de tipos de dados primitivos (string, número e booleano). Mas não há motivo para criar objetos complexos. Os valores primitivos são muito mais rápidos!
Use a literal de objeto {}
Substitua por new Object()
。
Use a literal de string ""
Substitua por new String()
。
Use a literal numérica em vez de Number()
。
Use a literal booleana em vez de new Boolean()
。
Use a literal de array []
Substitua por new Array()
。
Use a literal de padrão em vez de new RegExp()
。
Use a expressão de função () {}
Substitua por new Function()
。
Exemplo
var x1 = {}; // Novo objeto var x2 = ""; // Nova string original var x3 = 0; // Novo valor numérico original var x4 = false; // Novo valor lógico original var x5 = []; // Novo objeto array var x6 = /()/ // Novo objeto expressão regular var x7 = function(){}; // Novo objeto função
Objeto String
Normalmente, strings são criadas como valores primitivos: var firstName = "Bill"
Mas também pode usar new
Palavra-chave para criar objeto string: var firstName = new String("Bill")
Por favor, em Cadeias JSNesta seção, aprenda por que não deve criar strings como objetos.
Objeto Número
Normalmente, números são criados como valores primitivos: var x = 456
Mas também pode usar new
Palavra-chave para criar objeto número: var x = new Number(456)
Por favor, em Números JSNesta seção, aprenda por que não deve criar números como objetos.
Objeto Booleano
Normalmente, valores lógicos são criados como valores primitivos: var x = false
Mas também pode usar new
Palavra-chave para criar objeto lógico: var x = new Boolean(false)
Por favor, em Lógica JSNesta seção, aprenda por que não deve criar valores lógicos como objetos.
- Página Anterior Acessadores de Objetos JS
- Próxima Página Protótipos de Objetos JS