cs_Kimjoa
Messages postés262Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention19 septembre 2014
-
1 mars 2010 à 14:55
cs_Kimjoa
Messages postés262Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention19 septembre 2014
-
1 mars 2010 à 17:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Kimjoa
Messages postés262Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention19 septembre 2014 1 mars 2010 à 17:39
justement, grâce à la méthode native hasOwnProperty qui permet de savoir si une propriété est définit directement dans l'instance et non dans le prototype , je crois pas qu'il y ait des bug sur cette fonction, mais à tester quand même sous ie6.
par exemple une base pourrait ressembler à ca :
function Hash(obj){
for(var i in obj)
this[i] = obj[i];
}
Hash.prototype.each = function(fn, context){
context = context || this;
for(var i in this){
if(this.hasOwnProperty(i))
fn.call(context, this[i], i);
}
}
var jo = new Hash({
test1 : 'ok1',
test2 : 'ok2'
});
jo.each(function(value, index){
alert(index +' à comme valeur ' + value);
});
ousous
Messages postés1Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention 1 mars 2010 1 mars 2010 à 15:44
j'ai pensé a ta solution avant que tu la propose mais le pb c'est qil te retourne toutes les méthodes de ta classe donc c pas bon ce que j'ai fait retourne que ce quon vient d'ajouter dans le hashtable
cs_Kimjoa
Messages postés262Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention19 septembre 2014 1 mars 2010 à 14:55
salut, je me serais pris autrement. Au lieu de cloner l'objet et de le référencer par this.object, j'aurais étendue à l'instance toute les variables de l'objet. Ensuite la fonction hasOwnProperty permet de savoir si une propriété est définit dans le prototype ou dans l'insatnce.
Par exemple pour la fonction keys sa donnerait
keys:function(){
var a=[];
for(var b in this){
if(this.hasOwnProperty(b))
a.push(b);
}
return a;
}
1 mars 2010 à 17:39
par exemple une base pourrait ressembler à ca :
function Hash(obj){
for(var i in obj)
this[i] = obj[i];
}
Hash.prototype.each = function(fn, context){
context = context || this;
for(var i in this){
if(this.hasOwnProperty(i))
fn.call(context, this[i], i);
}
}
var jo = new Hash({
test1 : 'ok1',
test2 : 'ok2'
});
jo.each(function(value, index){
alert(index +' à comme valeur ' + value);
});
1 mars 2010 à 15:44
1 mars 2010 à 14:55
Par exemple pour la fonction keys sa donnerait
keys:function(){
var a=[];
for(var b in this){
if(this.hasOwnProperty(b))
a.push(b);
}
return a;
}