11548 sujets
Salut,
Modifié par marcv (06 Aug 2009 - 08:22)
function traiter(){alert('toto');}
Là tu déclares une méthode de l'objet window (aussi appelée fonction), donc censée être utilisée de la manière suivante : window.traiter();
// ou, plus fréquemment :
traiter();
Object.prototype.traiter = function(){alert('toto');};
Là tu déclares une méthode pour tous les objets, donc censée être appelée comme ça :monObjet.traiter();
Vu que tout est objet en Javascript, window va bien sûr récupérer cette méthode, mais tous les autres objets aussi, donc tu pourras faire :window.traiter();
unObjetPerso.traiter();
'abcdef'.traiter();
[1, 2, 3].traiter();
uneFonction.traiter();
// etc.
Note que vu l'importance fondamentale d'Object pour un comportement correct, prévisible, et donc compatible de Javascript, il est déconseillé d'y toucher (un exemple simple de problème : http://erik.eae.net/archives/2005/06/06/22.13.54/ ) Modifié par marcv (06 Aug 2009 - 08:22)
J'ajoute au dire de marcv qu'il faut alors bien faire attention à où tu déclares ta fonction et à la façon dont tu l'appelles car window peut ne pas en être le contexte.
function myFunction() {
alert(this);
}
var myOject = {
myFunction: function() {
alert(this);
}
};
myFunction(); // [object Window]
window.myFunction(); // [object Window]
myOject.myFunction(); // [object Object]
myOject.myFunction.call(window); // [object Window]