Informações
O tópico solicitado está sendo mostrado abaixo. No entanto, este tópico não está incluído nesta biblioteca.

Protótipos e herança de protótipos

Em JavaScript, um prototype é uma propriedade de funções e de objetos que são criados por funções de construtor. O protótipo de uma função é um objeto. Seu principal uso é quando uma função é usada como um construtor.

function Vehicle(wheels, engine) {
    this.wheels = wheels;
    this.engine = engine;
}

No exemplo anterior, o protótipo da função Vehicle é o protótipo de qualquer objeto instanciado com o construtor Vehicle.

Você pode usar a propriedade prototype para adicionar propriedades e métodos a objetos, mesmo aqueles que já foram criados:

var testVehicle = new Vehicle(2, false);
Vehicle.prototype.color = "red";
var testColor = testVehicle.color;

O valor de testColor é "red" (vermelho).

Você pode até mesmo adicionar propriedades e métodos a objetos predefinidos. Por exemplo, você pode definir um método Trim no objeto de protótipo String, e todas as cadeias de caracteres no seu script herdarão esse método.

String.prototype.trim = function()
{
    // Replace leading and trailing spaces with the empty string
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
var s = "    leading and trailing spaces    ";
// Displays "    leading and trailing spaces     (35)"
window.alert(s + " (" + s.length + ")");
// Remove the leading and trailing spaces
s = s.trim();
// Displays "leading and trailing spaces (27)"
window.alert(s + " (" + s.length + ")");

Hh924508.collapse_all(pt-br,VS.94).gifUsando protótipos para derivar um objeto de outro com Object.create

O objeto prototype pode ser usado para derivar um objeto de outro. Por exemplo, você pode usar a função Object.create para derivar um novo objeto Bicycle usando o protótipo do objeto Vehicle que definimos anteriormente (além de qualquer nova propriedade necessária).

var Bicycle = Object.create(Object.getPrototypeOf(Vehicle), {
    "pedals" :{value: true}
});

O objeto Bicycle possui as propriedades wheels, engine, color e pedals, e seu protótipo é Vehicle.prototype. O mecanismo de JavaScript localiza a propriedade pedals em Bicycle e pesquisa a cadeia de protótipos para localizar wheels, engine e as propriedades color em Vehicle.

Hh924508.collapse_all(pt-br,VS.94).gifAlterando o protótipo de um objeto

No Internet Explorer 11, você pode substituir o protótipo interno de um objeto ou função por um novo protótipo usando a propriedade __proto__. Ao usar essa propriedade, você herda as propriedades e os métodos do novo protótipo, junto com outras propriedades e métodos em sua cadeia de protótipos.

O exemplo a seguir mostra como você pode alterar o protótipo de um objeto. Este exemplo mostra como as propriedades herdadas do objeto mudam quando você altera seu protótipo.

function Friend() {
    this.demeanor = "happy";
}

function Foe() {
    this.demeanor = "suspicious";
}

var friend = new Friend();
var foe = new Foe();

var player = new Object();
player.__proto__ = foe;

friend.ally = "Tom";

if (console && console.log) {
    console.log(player.demeanor === "happy" );      // Returns false
    console.log(player.demeanor === "suspicious");  // Returns true
    console.log(player.ally === "Tom");             // Returns false
    // Turn the foe to a friend.
    player.__proto__ = friend;
    console.log(player.demeanor === "happy");       // Returns true
    console.log(player.demeanor === "suspicious");  // Returns false
    console.log(player.ally === "Tom");             // Returns true
}

Contribuições da comunidade

Mostrar:
© 2014 Microsoft