Criando seus próprios objetos com funções de construtor

Um poderoso recurso do JScript é a habilidade de definir construtores para criar objetos baseados no protótipo para uso em seus scripts. Para criar uma instância de um objeto baseado no protótipo, primeiro você deve definir um construtor. Esse processo cria um novo objeto e o inicializa (cria propriedades e atribui um valor inicial). Quando concluído, o construtor retorna uma referência ao objeto construído. Dentro do construtor, o objeto criado é chamado com o Este instrução.

Construtores de propriedades

O exemplo a seguir define uma função de construtor para pasta objetos. O Este instrução permite que o construtor inicializar o objeto.

// pasta is a constructor that takes four parameters.
function pasta(grain, width, shape, hasEgg) {
   this.grain = grain;    // What grain is it made of?
   this.width = width;    // How many centimeters wide is it?
   this.shape = shape;    // What is the cross-section?
   this.hasEgg = hasEgg;  // Does it have egg yolk as a binder?
}

Depois de definir um construtor de objetos, você cria instâncias do objeto com o nova operador. Aqui o pasta construtor é usado para criar spaghetti e linguine objetos.

var spaghetti = new pasta("wheat", 0.2, "circle", true);
var linguine = new pasta("wheat", 0.3, "oval", true);

Você pode adicionar propriedades dinamicamente a uma instância de um objeto, mas essas mudanças que fetam apenas uma instância.

// Additional properties for spaghetti. The properties are not added
// to any other pasta objects.
spaghetti.color = "pale straw";
spaghetti.drycook = 7;
spaghetti.freshcook = 0.5;

Se você quiser adicionar uma propriedade extra para todas as instâncias do objeto sem modificar a função construtor, você pode adicionar a propriedade para o construtor do objeto protótipo. Para obter mais informações, consulte Criação de objeto avançado (Visual Studio - JScript).

// Additional property for all pasta objects. 
pasta.prototype.foodgroup = "carbohydrates";

Construtores com métodos

É possível incluir métodos (funções) na definição de um objeto. Uma maneira de fazer isso é incluir uma propriedade do construtor, em uma função que se refere a uma função definida em outro local. Como as funções do construtor, essas funções também se referir ao objeto atual com o Este instrução.

O exemplo a seguir expande a pasta a função de construtor definida acima para incluir um toString método será chamado se a função exibe o valor do objeto. (Em geral, usará a JScript a toString método de um objeto quando o objeto é usado em uma situação onde uma seqüência de caracteres é necessária. Você raramente precisará chamar o toString método explicitamente.)

// pasta is a constructor that takes four parameters.
// The properties are the same as above.
function pasta(grain, width, shape, hasEgg) {
   this.grain = grain;    // What grain is it made of?
   this.width = width;    // How many centimeters wide is it?
   this.shape = shape;    // What is the cross-section?
   this.hasEgg = hasEgg;  // Does it have egg yolk as a binder?
   // Add the toString method (defined below).
   // Note that the function name is not followed with parentheses;
   // this is a reference to the function itself, not a function call.
   this.toString = pastaToString;
}

// The function to display the contents of a pasta object.
function pastaToString() {
   return "Grain: " + this.grain + "\n" +
          "Width: " + this.width + " cm\n" +
          "Shape: " + this.shape + "\n" +
          "Egg?:  " + Boolean(this.hasEgg);
}

var spaghetti = new pasta("wheat", 0.2, "circle", true);
// Call the method explicitly.
print(spaghetti.toString());
// The print statement takes a string as input, so it
//  uses the toString() method to display the properties
// of the spaghetti object.
print(spaghetti);

Isso exibe a saída a seguir.

Grain: wheat
Width: 0.2 cm
Shape: circle
Egg?:  true
Grain: wheat
Width: 0.2 cm
Shape: circle
Egg?:  true

Consulte também

Outros recursos

Objetos com base em protótipo

Objetos de JScript