Foros del Web » Programando para Internet » Javascript »

herencia de prototipos json

Estas en el tema de herencia de prototipos json en el foro de Javascript en Foros del Web. Como hago para heredar un prototipo con notación json, y agregar y modificar propiedades? Entiendo que esto es para objetos clasicos: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript ...
  #1 (permalink)  
Antiguo 01/11/2011, 08:25
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
herencia de prototipos json

Como hago para heredar un prototipo con notación json, y agregar y modificar propiedades?

Entiendo que esto es para objetos clasicos:
Código Javascript:
Ver original
  1. view_2.prototype = new slideView();

Pero si parto de aqui:
Código Javascript:
Ver original
  1. var slideView = {
  2.     currentPosition : 0,
  3.     slidesContainer : null,      
  4.     slides : null,      
  5.        
  6.     slideWidth : function(){
  7.         slides = this.slides;
  8.         return j(slides.get(0)).outerWidth(true);
  9.     },
  10.     numberOfSlides : function(){
  11.         slides = this.slides;
  12.         return this.slides.length;
  13.     },
  14.     innerMargin : function(){
  15.         slideWidth = this.slideWidth();
  16.         return (windowsWidth-this.slideWidth())/2; // left margin
  17.     }
  18. }
  19.  
  20. var view_1 = {    
  21.     slidesContainer : j('#shop-thumbs-container'),      // thumbs images slider
  22.     slides : j('#shop-thumbs-container .slide')      // thumbs images slider
  23. }
  24.  
  25. var view_2 = {
  26.     slidesContainer : j('#shop-slides-container'),      // big images slider
  27.     slides : j('#shop-slides-container .slide')      // big images slider
  28. }
  29.  
  30. view_1.prototype = slideView;
  31. view_2.prototype = slideView;

Como genero objetos view_1 y view_2 que sobreescriban algunas propiedades de slideView? Creo que usando jQuery el equivalente sería: jQuery.extend()

Última edición por mayid; 01/11/2011 a las 08:39
  #2 (permalink)  
Antiguo 01/11/2011, 11:37
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 6 meses
Puntos: 834
Respuesta: herencia de prototipos json

Un par de opciones para extender ese tipo de objetos:
Código PHP:
<script type="text/javascript">
var 
slideView={
a:1,
b:2,
c:function(m){alert(m);},
d:function(){alert(this.a);}
}
//opcion1
var view_2=function(){}
view_2.prototype=slideView;
view_2.prototype.z=function(){alert("Firefox");}
var 
algo=new view_2;
alert(algo.b);
algo.d();
algo.z();
//opcion 2
var otro={z:function(){alert("Firefox");}}
for(var 
i in slideView){
    
otro[i]=slideView[i];
}
alert(otro.b);
otro.d();
otro.z();
</script> 
  #3 (permalink)  
Antiguo 01/11/2011, 14:33
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: herencia de prototipos json

Gracias Panino. Creo que me voy a sentir más cómodo con la segunda opción. Aunque según creo, será mejor evitar sobreescribir items existentes con algo así:

Código Javascript:
Ver original
  1. for(var i in slideView){
  2.     if (typeof otro[i] != "undefined") continue;
  3.     otro[i]=slideView[i];
  4. }

No lo probé aún, pero la idea sería no pisar items del nuevo objeto con los del prototipo.

Gracias de nuevo por las ideas.

Etiquetas: herencia, jquery, js, json, prototipos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:41.