Actuellement, je crée des objets en javascript en déclarant une construction (fonction régulière), puis ajouter des méthodes au prototype comme siéviter d'avoir à déclarer « var moi = ce » pour les fonctions javascript prototype
function Test(){
}
Test.prototype.test1 = function(){
var me = this;
}
Cependant, je voudrais éviter d'avoir à déclarer var me = this
au sommet de chaque fonction. Ce qui suit semble fonctionner, mais il semble que ce serait très inefficace:
$(document).ready(function(){
var n = 0;
(function(){
function createTest(){
var me;
function Test(){
this.n = n;
this.testArr = [1, 2, 3, 4];
n++;
}
Test.prototype.test1 = function(){
me.test2();
};
Test.prototype.test2 = function(){
alert(me.n);
$.getJSON('test.php', {}, function(reply)
//want to be able to use 'me' here
me.newField = reply;
});
};
var t = new Test();
me = t;
return t;
}
window['createTest'] = createTest;
})();
var t = createTest();
t.test1();
var t2 = createTest();
t2.test1();
t.test1();
});
Ce code donne les résultats prévu, mais est-il réellement aussi inefficace qu'il semble (l'objet de test étant nouveau déclaré chaque fois que vous appelez createTest())?
Anyhoo, cela semblerait un peu hacky ... y a-t-il une manière complètement différente de faire ceci qui est meilleure?
EDIT: La vraie raison pour laquelle je voudrais faire ceci est que les rappels comme celui dans test2 auront des références à la bonne this
.
Vous devriez lire ceci (excusez le jeu de mots): http://bonsaiden.github.com/JavaScript-Garden/#function.this –
très instructif. Merci beaucoup! Oh, et votre calembour est excusé :) – Hersheezy