Voil=E0 j'ai un petit probleme... Dans tous les tutoriaux sur le net je
vois que le motCle "this" d=E9finit =E0 la base m=EAme du script est
=E9quivalent =E0 "window".
Mais le simple script suivant me montre que les proprietes des deux
objets different que ce soit sur Explorer, Netscape ou Opera...
Pouvez-vous m'expliquer ou un lien expliquant pourquoi ils ne sont pas
identiques
<script type=3D"text/javascript">
for(var i in this){ //ou window
document.write(i+" "+"<br>");
}
</script>
De plus
document.write(this =3D=3D document);
Donne true dans Internet Explorer mais false dans Netscape ou Opera
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yann-Erwan Perio
Tom wrote:
Bonjour,
Voilà j'ai un petit probleme... Dans tous les tutoriaux sur le net je vois que le motCle "this" définit à la base même du script est équivalent à "window".
En fait, la valeur de "this" dépend du contexte d'execution. Si "this" est employé dans une méthode, alors la valeur de "this" est une référence vers l'objet auquel la méthode appartient, sinon la valeur de "this" est une référence vers l'objet global ("global object").
L'objet global est un objet situé tout en haut des chaînes de portée javascript, il appartient à javascript. Lorsque javascript est inclus dans un navigateur, alors la plupart des navigateurs (je ne me prononcerai pas pour tous) joignent l'objet global et "window".
Mais le simple script suivant me montre que les proprietes des deux objets different que ce soit sur Explorer, Netscape ou Opera...
<script type="text/javascript"> for(var i in this){ //ou window document.write(i+" "+"<br>"); } </script>
Si on fait ce tourner ce script alternativement avec "this" et "window", on obtient les mêmes propriétés pour Opera, IE et un écart sur navigator, window et location pour Mozilla.
De plus document.write(this == document); Donne true dans Internet Explorer mais false dans Netscape ou Opera
Dans IE: this==document donne true, this===document donne false. Dans Mozilla: this===window donne true, mais certaines propriétés de window ne sont pas énumérées dans une boucle (for..in) appliqué sur "this".
L'égalité entre "window" et "this" reste un problème d'implémentation par les user agents, et tout en étant admise n'en reste pas moins non documentée (même si ECMA262 donne un "hint").
Personnellement, lorsque je souhaite utiliser le "global object" (i.e. l'objet global, indépendamment du host) je code "this", même pour du code écrit pour un browser; lorsque je réfère vraiment au node "window", alors j'utilise window.
Cordialement, Yep.
Tom wrote:
Bonjour,
Voilà j'ai un petit probleme... Dans tous les tutoriaux sur le net je
vois que le motCle "this" définit à la base même du script est
équivalent à "window".
En fait, la valeur de "this" dépend du contexte d'execution. Si "this"
est employé dans une méthode, alors la valeur de "this" est une
référence vers l'objet auquel la méthode appartient, sinon la valeur de
"this" est une référence vers l'objet global ("global object").
L'objet global est un objet situé tout en haut des chaînes de portée
javascript, il appartient à javascript. Lorsque javascript est inclus
dans un navigateur, alors la plupart des navigateurs (je ne me
prononcerai pas pour tous) joignent l'objet global et "window".
Mais le simple script suivant me montre que les proprietes des deux
objets different que ce soit sur Explorer, Netscape ou Opera...
<script type="text/javascript">
for(var i in this){ //ou window
document.write(i+" "+"<br>");
}
</script>
Si on fait ce tourner ce script alternativement avec "this" et "window",
on obtient les mêmes propriétés pour Opera, IE et un écart sur
navigator, window et location pour Mozilla.
De plus
document.write(this == document);
Donne true dans Internet Explorer mais false dans Netscape ou Opera
Dans IE: this==document donne true, this===document donne false.
Dans Mozilla: this===window donne true, mais certaines propriétés de
window ne sont pas énumérées dans une boucle (for..in) appliqué sur "this".
L'égalité entre "window" et "this" reste un problème d'implémentation
par les user agents, et tout en étant admise n'en reste pas moins non
documentée (même si ECMA262 donne un "hint").
Personnellement, lorsque je souhaite utiliser le "global object" (i.e.
l'objet global, indépendamment du host) je code "this", même pour du
code écrit pour un browser; lorsque je réfère vraiment au node "window",
alors j'utilise window.
Voilà j'ai un petit probleme... Dans tous les tutoriaux sur le net je vois que le motCle "this" définit à la base même du script est équivalent à "window".
En fait, la valeur de "this" dépend du contexte d'execution. Si "this" est employé dans une méthode, alors la valeur de "this" est une référence vers l'objet auquel la méthode appartient, sinon la valeur de "this" est une référence vers l'objet global ("global object").
L'objet global est un objet situé tout en haut des chaînes de portée javascript, il appartient à javascript. Lorsque javascript est inclus dans un navigateur, alors la plupart des navigateurs (je ne me prononcerai pas pour tous) joignent l'objet global et "window".
Mais le simple script suivant me montre que les proprietes des deux objets different que ce soit sur Explorer, Netscape ou Opera...
<script type="text/javascript"> for(var i in this){ //ou window document.write(i+" "+"<br>"); } </script>
Si on fait ce tourner ce script alternativement avec "this" et "window", on obtient les mêmes propriétés pour Opera, IE et un écart sur navigator, window et location pour Mozilla.
De plus document.write(this == document); Donne true dans Internet Explorer mais false dans Netscape ou Opera
Dans IE: this==document donne true, this===document donne false. Dans Mozilla: this===window donne true, mais certaines propriétés de window ne sont pas énumérées dans une boucle (for..in) appliqué sur "this".
L'égalité entre "window" et "this" reste un problème d'implémentation par les user agents, et tout en étant admise n'en reste pas moins non documentée (même si ECMA262 donne un "hint").
Personnellement, lorsque je souhaite utiliser le "global object" (i.e. l'objet global, indépendamment du host) je code "this", même pour du code écrit pour un browser; lorsque je réfère vraiment au node "window", alors j'utilise window.