IMPLEMENTATION DE HASHTABLE

cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014 - 1 mars 2010 à 14:55
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 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.

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

cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 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és 1 Date d'inscription mercredi 30 juin 2004 Statut Membre Derniè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és 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 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;
}
Rejoignez-nous