Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
people:etanter:jsproto [2012/11/09 14:26] etanterpeople:etanter:jsproto [2012/11/09 14:29] (current) etanter
Line 1: Line 1:
-En JavaScript, todo objeto tiene una propiedad %%__proto__%% que referencia el objeto al cual el objeto delega. Por defecto, el padre de cada objeto es Object:+En JavaScript, todo objeto tiene una propiedad %%'__proto__'%% que referencia el objeto al cual el objeto delega. Por defecto, el padre de cada objeto es Object:
  
 <code> <code>
Line 5: Line 5:
 > o.__proto__ > o.__proto__
 Object Object
-</code> 
- 
-Que es Object? una función nativa: 
-<code> 
 > Object > Object
 function Object() { [native code] } function Object() { [native code] }
 </code> </code>
  
-La propiedad __proto__ se puede setear explicitamente para especificar quien es el objeto padre:+La propiedad %%'__proto__'%% se puede setear explicitamente para especificar quien es el objeto padre:
 <code> <code>
 > o.x > o.x
Line 31: Line 27:
 </code> </code>
  
-Las funciones son objetos, entonces tienen un __proto__, el cual por defecto es una función con cuerpo vacío:+Las funciones son objetos, entonces tienen una propiedad %%'__proto__'%%la cual por defecto apunta a una función con cuerpo vacío:
  
 <code> <code>
Line 48: Line 44:
 </code> </code>
  
-Una función no solamente parte con __proto__, sino que ademas parte con una propiedad llamada 'prototype'. Esta por defecto apunta a Object. Esta propiedad se usa para setear el __proto__ de los objetos creados via 'new' con esta función:+Una función no solamente parte con %%'__proto__'%%, sino que ademas parte con una propiedad llamada 'prototype'. Esta por defecto apunta a Object. Esta propiedad se usa para setear el %%'__proto__'%% de los objetos creados via 'new' con esta función:
 <code> <code>
 > f = function() {} > f = function() {}
Line 58: Line 54:
 </code> </code>
  
-Ojo que //reasignar// el 'prototype' de una función no afecta el __proto__ de los objetos ya creados a partir de esa función. Pero si, //mutar// este 'prototype' afecta los objetos ya creados.+Ojo que //reasignar// el 'prototype' de una función no afecta el %%'__proto__'%% de los objetos ya creados a partir de esa función. Pero si, //mutar// este 'prototype' afecta los objetos ya creados.
 <code> <code>
 > f.prototype = { x : 10 } > f.prototype = { x : 10 }