Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Operadores
  5. new operator

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

new operator

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨julho de 2015⁩.

Ooperadornew cria uma instancia de um tipo de objeto definido pelo usuário ou de um dos tipos nativos (built-in) que possuem uma função construtora.

Experimente

function Car(make, model, year) {  this.make = make;  this.model = model;  this.year = year;}const car1 = new Car("Eagle", "Talon TSi", 1993);console.log(car1.make);// Expected output: "Eagle"

Sintaxe

new construtor[([argumentos])]

Parametros

construtor

Uma função que especifica o tipo da instância do objeto.

argumentos

Uma lista de valores com os quais o construtor será chamado.

Descrição

Criar um objeto definido pelo usuário requer dois passos:

  1. Definir o tipo de objeto através da escrita de uma função.
  2. Criar uma instancia do objeto utilizandonew.

Para definir um tipo de objeto, crie uma função para o tipo de objetivo que especifica seu nome e propriedades. Um objeto pode ter uma propriedade que é um outro objeto. Veja os exemplos abaixo:

Quando o códigonew Foo(...) é executado, acontece o seguinte::

  1. Um novo objeto é criado, herdando deFoo.prototype.
  2. A função construtoraFoo é chamado com os argumentos especificados, e comthis vinculado ao novo objeto criado.new Foo é equivalente anew Foo(), ou seja, se nenhuma lista de argumentos for especificada,Foo é chamado sem argumentos.
  3. O objeto retornado pela função construtora é o resultado de toda expressãonew. Se a função construtora não retornar um objeto explicitamente, o objeto criado no passo 1 é então usado. (Normalmente construtores não retornam um valor, mas eles podem escolher fazê-lo se eles quiserem sobrescrever o processo normal de criação de objeto.)

Você sempre pode adicionar uma propriedade à um objeto definido previamente. Por exemplo,carro1.cor = "preta" adiciona a propriedadecor emcarro1, e atribui a ela o valor de "preta". Entretanto, isso não afeta os outros objetos. Para adicionar a nova propriedade a todos objetos do mesmo tipo, você deve adicionar a propriedade à definição do tipo de objetoCarro.

Você pode adicionar uma propriedade compartilhada à um tipo de objeto definido anteriormente através do uso da propriedadeFunction.prototype. Isso define uma propriedade que é compartilhada por todos os objetos criados com essa função, ao invés de apenas uma instancia do tipo de objeto. O código a seguir adiciona uma propriedade cor com valornull à todos objetos do tipocarro, e então sobrescreve aquele valor com a string "preta" somente no objeto de instanciacarro1. Para mais informações vejaprototype.

js
function Carro() {}carro1 = new Carro();console.log(carro1.cor); // undefinedCarro.prototype.cor = null;console.log(carro1.cor); // nullcarro1.cor = "preta";console.log(carro1.cor); // preta

Exemplos

Tipo de objeto e instância de objeto

Suponha que você quer criar um tipo de objeto para carros. Você quer que esse tipo de objeto se chamecarro, e quer que ele tenha propriedade para fabricante, modelo e ano. Para fazer isso, você escreveria a função a seguir:

js
function Carro(fabricante, modelo, ano) {  this.fabricante = fabricante;  this.modelo = modelo;  this.ano = ano;}

Agora você pode criar um objeto chamadomeucarro como a seguir:

js
var meucarro = new Carro("Eagle", "Talon TSi", 1993);

Essa declaração criameucarro e atribui a ele os valores especificados as suas propriedades. Então o valor demeucarro.fabricante é a string "Eagle",meucarro.ano é o inteiro 1993, e assim sucessivamente.

Você pode criar qualquer numero de objetoscarro através de chamadas anew. Por exemplo:

js
var carrodoken = new Carro("Nissan", "300ZX", 1992);

Propriedade do objeto que é outro objeto

Suponha que você defina um objeto chamadopessoa como a seguir:

js
function Pessoa(nome, idade, sexo) {  this.nome = nome;  this.idade = idade;  this.sexo = sexo;}

E então instancia dois novos objetospessoa como a seguir:

js
var rand = new Pessoa("Rand McNally", 33, "M");var ken = new Pessoa("Ken Jones", 39, "M");

Então você pode reescrever a definição decarro para incluir uma propriedade dono que aceita um objeto pessoa, como a seguir:

js
function Carro(fabricante, modelo, ano, dono) {  this.fabricante = fabricante;  this.modelo = modelo;  this.ano = ano;  this.dono = dono;}

Para instanciar os novos objetos, você então usa o seguinte:

js
var carro1 = new Carro("Eagle", "Talon TSi", 1993, rand);var carro2 = new Carro("Nissan", "300ZX", 1992, ken);

Ao invés de passar uma string ou valor inteiro quando criar os novos objetos, as definições acima passam objetosrand eken como os parâmetros para os donos. Para descobrir o nome do dono docarro2, você pode acessar a seguinte propriedade:

js
carro2.dono.nome;

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-new-operator

Compatibilidade com navegadores

Veja também

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp