<h1>Prototípica</h1>
<p>
Em um padrão puramente protótipico, nós dispensamos classes. Nós nos concentramos sobre os objetos. Herança de protótipo é conceitualmente mais simples do que a herança clássica: um novo objeto pode herdar as propriedades de um velho objeto. Esta seja, talvez desconhecida, mas é muito fácil de entender. Você começa fazendo um objeto útil.
</p>
<p>
Você pode então fazer muitos mais objetos que são como esse. O processo de classificação de quebrar um aplicativo em um conjunto de classes abstratas aninhadas pode ser totalmente evitado. Vamos começar usando um objeto literal para fazer um objeto útil:
</p>
<pre>
var myMammal = {
name : 'Herb the Mammal',
get_name : function ( ) {
return this.name;
},
says : function ( ) {
return this.saying || '';
}
};
</pre>
<p>
Uma vez que temos um objeto que nós gostamos, podemos fazer mais instâncias com o método Object.create do Capítulo 3. Nós podemos personalizar as novas instâncias:
</p>
<pre>
var myCat = Object.create(myMammal);
myCat.name = 'Henrietta';
myCat.saying = 'meow';
myCat.purr = function (n) {
var i, s = '';
for (i = 0; i < n; i += 1) {
if (s) {
s += '-';
}
s += 'r';
}
return s;
};
myCat.get_name = function ( ) {
return this.says( ) + ' ' + this.name + ' ' + this.says( );
};
</pre>
<p>
Esta é a herança diferencial. Ao personalizar um novo objeto, especificamos as diferenças em relação ao objeto sobre o qual se baseia.
</p>
<p>
Às vezes é útil para estruturas de dados herdar de outras estruturas de dados. Aqui está um exemplo: Suponha que estamos analisando uma linguagem como JavaScript ou TEX em que um par de chaves indica um escopo. Itens definidos em um escopo da aplicação não são visíveis fora dele.
</p>
<p>
Em certo sentido, um âmbito interno herda de seu escopo externo. Objetos JavaScript são muito bons no que representa essa relação. A função block é chamada quando uma chave a esquerda...
CSS
body {
font-size: 1em;
font-family: Verdana;
}
pre {
background-color: #CCC;
}
JavaScript
var myMammal = {
name : 'Herb the Mammal',
get_name : function ( ) {
return this.name;
},
says : function ( ) {
return this.saying || '';
}
};
var myCat = Object.create(myMammal);
myCat.name = 'Henrietta';
myCat.saying = 'meow';
myCat.purr = function (n) {
var i, s = '';
for (i = 0; i < n; i += 1) {
if (s) {
s += '-';
}
s += 'r';
}
return s;
};
myCat.get_name = function ( ) {
return this.says( ) + ' ' + this.name + ' ' + this.says( );
};
console.log(myMammal.get_name());
Please Whitelist JSFiddle in your content blocker.
Help keep JSFiddle free for always by one of two ways:
Whitelist JSFiddle in your content blocker (two clicks)
Go PRO and get access to additional PRO features →
Join the 4+ million users, and keep the JSFiddle dream alive.
Ad-free
All ads in the editor and listing pages are turned completely off.
Use pre-released features
You get to try and use features (like the Palette Color Generator) months before everyone else.
Fiddle collections
Sort and categorize your Fiddles into multiple collections.
Private collections and fiddles
You can make as many Private Fiddles, and Private Collections as you wish!
Console
Debug your Fiddle with a minimal built-in JavaScript console.