|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Inscrit
Inscription : décembre 2004 Messages : 317 ![]() |
Salut a tous,
Je me heurte à un petit problème dont je ne vois vraiment pas la raison ni la solution. J'ai un objet, mettons comme ca : Code :
J'ai ma requete ajax comme ca : Code :
Et bien ca ne marche pas ! L'erreur est "Uncaught TypeError: Object [object DOMWindow] has no method 'datatable'". Effectivement, si depuis ma méthode delete_entry (qui est bien exécutée) j'affiche this, eh bien JS me dit que c'est un objet de type... DOM Window ?? Alors que ca devrait être mon objet asso_book_datatables... Et, si dans mon appel ajax je remplace callback() par asso_book_datatable.delete_entry(), alors ca marche sans problème ! La question c'est donc : pourquoi est-ce que JS ne veut pas utiliser ma variable callback pour exécuter la méthode de mon objet ? D'où vient ce DOM Windows au milieu de _mon_ objet ? Sachant qu'à d'autres endroits de mon code j'ai ce genre d'appel qui marche très bien. Merci ! |
||||
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 573 ![]() |
Il faut "fixer" le contexte de this :
Code :
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
||
|
|
10
|
|
|
#3 |
|
Inscrit
Inscription : décembre 2004 Messages : 317 ![]() |
Salut,
Merci, effectivement il faut utiliser cette astuce. Ne pas oublier de faire un objet-fonction, parce que la en fait j'ai un objet littéral (je le savais pas :p), et la technique du that ne marche pas. C'est assez moche quand même le JS des fois ![]() Merci |
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 573 ![]() |
Citation:
Disons que j'ai rien entendu
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
|
|
|
00
|
|
|
#5 | ||||
|
Membre Expert
![]() Matilin TorreÉtudiant Inscription : juin 2010 Messages : 679 ![]() |
C'est de la logique, au-delà de toute notion de moche et de beau
Une seule règle à retenir : this c'est ce qu'il y a avant le point au moment de l'appel. Je m'explique : Code JS :
asso_book_datatables.delete_entry(); Code JS :
callback(); // implicitement : window.callback(); Note que les fonctions ont deux méthodes natives, call et apply, qui permettent de « restaurer le contexte ». Code JS :
En l'occurence : Code JS :
__________________
Disposition de clavier ergonomique française : Bépo |
||||
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Oui, de toute manière, lorsque l'on utilise des objets comme des constructeurs (avec une certaine analogie aux classes habituelles en POO), il faut les utiliser au travers d'instances (avec le mot clé new pour définir chaque instance) et dans ce cas, this référence bien le constructeur.
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
Copyright © 2000-2012 - www.developpez.com