Neste tutorial, você aprenderá sobre a função do construtor JavaScript com a ajuda de exemplos.
Em JavaScript, uma função construtora é usada para criar objetos. Por exemplo,
// constructor function function Person () ( this.name = 'John', this.age = 23 ) // create an object const person = new Person();
No exemplo acima, function Person()
é uma função de construtor de objeto.
Para criar um objeto a partir de uma função construtora, usamos a new
palavra - chave.
Nota : É considerada uma boa prática colocar a primeira letra da função de construtor em maiúscula.
Criar vários objetos com função de construtor
Em JavaScript, você pode criar vários objetos de uma função de construtor. Por exemplo,
// constructor function function Person () ( this.name = 'John', this.age = 23, this.greet = function () ( console.log('hello'); ) ) // create objects const person1 = new Person(); const person2 = new Person(); // access properties console.log(person1.name); // John console.log(person2.name); // John
No programa acima, dois objetos são criados usando a mesma função de construtor.
JavaScript esta palavra-chave
Em JavaScript, quando a this
palavra-chave é usada em uma função construtora, this
refere-se ao objeto quando o objeto é criado. Por exemplo,
// constructor function function Person () ( this.name = 'John', ) // create object const person1 = new Person(); // access properties console.log(person1.name); // John
Portanto, quando um objeto acessa as propriedades, ele pode acessar diretamente a propriedade como person1.name
.
Parâmetros de função do construtor JavaScript
Você também pode criar uma função de construtor com parâmetros. Por exemplo,
// constructor function function Person (person_name, person_age, person_gender) ( // assigning parameter values to the calling object this.name = person_name, this.age = person_age, this.gender = person_gender, this.greet = function () ( return ('Hi' + ' ' + this.name); ) ) // creating objects const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'female'); // accessing properties console.log(person1.name); // "John" console.log(person2.name); // "Sam"
No exemplo acima, passamos argumentos para a função construtora durante a criação do objeto.
const person1 = new Person('John', 23, 'male'); const person2 = new Person('Sam', 25, 'male');
Isso permite que cada objeto tenha propriedades diferentes. Como mostrado acima,
console.log(person1.name);
dá John
console.log(person2.name);
dá Sam
Criar Objetos: Função de Construtor Vs Literal de Objeto
- Object Literal é geralmente usado para criar um único objeto. A função construtora é útil se você deseja criar vários objetos. Por exemplo,
// using object literal let person = ( name: 'Sam' )
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person();
- Cada objeto criado a partir da função do construtor é único. Você pode ter as mesmas propriedades da função do construtor ou adicionar uma nova propriedade a um objeto específico. Por exemplo,
// using constructor function function Person () ( this.name = 'Sam' ) let person1 = new Person(); let person2 = new Person(); // adding new property to person1 person1.age = 20;
Agora, esta age
propriedade é exclusiva para o person1
objeto e não está disponível para o person2
objeto.
No entanto, se um objeto for criado com um literal de objeto e se uma variável for definida com esse valor de objeto, qualquer alteração no valor da variável alterará o objeto original. Por exemplo,
// using object lateral let person = ( name: 'Sam' ) console.log(person.name); // Sam let student = person; // changes the property of an object student.name = 'John'; // changes the origins object property console.log(person.name); // John
Quando um objeto é criado com um literal de objeto, qualquer variável de objeto derivada desse objeto atuará como um clone do objeto original. Portanto, qualquer alteração feita em um objeto também se refletirá no outro objeto.
Adicionando propriedades e métodos em um objeto
Você pode adicionar propriedades ou métodos em um objeto como este:
// constructor function function Person () ( this.name = 'John', this.age = 23 ) // creating objects let person1 = new Person(); let person2 = new Person(); // adding property to person1 object person1.gender = 'male'; // adding method to person1 object person1.greet = function () ( console.log('hello'); ) person1.greet(); // hello // Error code // person2 doesn't have greet() method person2.greet();
Resultado
hello Uncaught TypeError: person2.greet não é uma função
No exemplo acima, uma nova propriedade gender
e um novo método greet()
são adicionados ao person1
objeto.
No entanto, essa nova propriedade e método são apenas adicionados a person1
. Você não pode acessar gender
ou greet()
de person2
. Portanto, o programa dá erro quando tentamos acessarperson2.greet();
Protótipo de objeto JavaScript
Você também pode adicionar propriedades e métodos a uma função de construtor usando um protótipo . Por exemplo,
// constructor function function Person () ( this.name = 'John', this.age = 23 ) // creating objects let person1 = new Person(); let person2 = new Person(); // adding new property to constructor function Person.prototype.gender = 'Male'; console.log(person1.gender); // Male console.log(person2.gender); // Male
Para saber mais sobre protótipos, visite Protótipo de JavaScript.
Construtores internos de JavaScript
JavaScript também tem construtores integrados. Alguns deles são:
let a = new Object(); // A new Object object let b = new String(); // A new String object let c = new Number(); // A new Number object let d = new Boolean(); // A new Boolean object
Em JavaScript, as strings podem ser criadas como objetos:
const name = new String ('John'); console.log(name); // "John"
Em JavaScript, os números podem ser criados como objetos por:
const number = new Number (57); console.log(number); // 57
Em JavaScript, os booleanos podem ser criados como objetos por:
const count = new Boolean(true); console.log(count); // true
Nota : Recomenda-se usar tipos de dados primitivos e criá-los de maneira normal, como const name = 'John';
, const number = 57;
econst count = true;
Você não deve declarar strings, números e valores booleanos como objetos porque eles tornam o programa mais lento.
Nota : Em JavaScript, a palavra-chave class
foi introduzida no ES6 (ES2015) que também nos permite criar objetos. As classes são semelhantes às funções do construtor em JavaScript. Para saber mais, visite Classes de JavaScript.