IMPLEMENTATION DE HASHTABLE

Signaler
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014
-
cs_Kimjoa
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51362-implementation-de-hashtable

cs_Kimjoa
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

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és
1
Date d'inscription
mercredi 30 juin 2004
Statut
Membre
Dernière intervention
1 mars 2010

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és
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

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;
}