Je ne parvient pas à construire une méthode d'un objet qui s'appelle
elle meme à partir d'un settimout.
--------------------------------------------------
function monObjet(t,truc,bidule){
this.t=t;
this.truc=truc;
this.bidule=bidule;
this.slide = function(){
...
setTimout('this.slide()',this.t); /*ligne xx */
}
}
var belObjet = new monObjet(10,'machin','chose');
belObjet.slide();
---------------------------------------------------
firefox me revoie "ligne xx this.slide n'est pas une fonction". A priori
je ne parvient pas non plus à appeller une autre méthode de cette façon.
--
Raphaël
http://www.r-wils.com
« Don't mean a thing if you ain't got that swing ! »
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
ASM
Bonsoir à tous
Je ne parvient pas à construire une méthode d'un objet qui s'appelle elle meme à partir d'un settimout.
et avec setTimeout ? ..............^
Sinon, et si ce n'est qu'une coquille du post, est-ce qu'on peut faire un self timeout d'une fonction contenue dans une autre ?
Je suppose que tu as essayé
setTimeout('this.slide',this.t); ou setTimeout(this.slide+'()',this.t); ou setTimeout(this.slide,this.t); ou this.setTimeout('slide()',this.t); ou setTimeout('slide('+this+')',this.t); ou setTimeout(this+'.slide()',this.t); etc ....
Question : qd tu vires le timeout et-ce que belObjet.slide() fonctionne ?
Ah! et comment tu l'arretes ?
-------------------------------------------------- function monObjet(t,truc,bidule){
this.t=t; this.truc=truc; this.bidule=bidule;
this.slide = function(){ ... setTimout('this.slide()',this.t); /*ligne xx */ } }
var belObjet = new monObjet(10,'machin','chose'); belObjet.slide(); --------------------------------------------------- firefox me revoie "ligne xx this.slide n'est pas une fonction". A priori je ne parvient pas non plus à appeller une autre méthode de cette façon.
reste plus qu'à faire comme d'ordinaire qd on n'y comprend pas trop ?
function monObjet(t,truc,bidule){ this.t=t; this.truc=truc; this.bidule=bidule;
-- ******************************************************* Stéphane MORIAUX et son vieux Mac *******************************************************
Bonsoir à tous
Je ne parvient pas à construire une méthode d'un objet qui s'appelle
elle meme à partir d'un settimout.
et avec setTimeout ?
..............^
Sinon, et si ce n'est qu'une coquille du post,
est-ce qu'on peut faire un self timeout d'une fonction
contenue dans une autre ?
Je suppose que tu as essayé
setTimeout('this.slide',this.t);
ou
setTimeout(this.slide+'()',this.t);
ou
setTimeout(this.slide,this.t);
ou
this.setTimeout('slide()',this.t);
ou
setTimeout('slide('+this+')',this.t);
ou
setTimeout(this+'.slide()',this.t);
etc ....
Question :
qd tu vires le timeout et-ce que belObjet.slide() fonctionne ?
Ah! et comment tu l'arretes ?
--------------------------------------------------
function monObjet(t,truc,bidule){
this.t=t;
this.truc=truc;
this.bidule=bidule;
this.slide = function(){
...
setTimout('this.slide()',this.t); /*ligne xx */
}
}
var belObjet = new monObjet(10,'machin','chose');
belObjet.slide();
---------------------------------------------------
firefox me revoie "ligne xx this.slide n'est pas une fonction". A priori
je ne parvient pas non plus à appeller une autre méthode de cette façon.
reste plus qu'à faire comme d'ordinaire qd on n'y comprend pas trop ?
function monObjet(t,truc,bidule){
this.t=t;
this.truc=truc;
this.bidule=bidule;
Je ne parvient pas à construire une méthode d'un objet qui s'appelle elle meme à partir d'un settimout.
et avec setTimeout ? ..............^
Sinon, et si ce n'est qu'une coquille du post, est-ce qu'on peut faire un self timeout d'une fonction contenue dans une autre ?
Je suppose que tu as essayé
setTimeout('this.slide',this.t); ou setTimeout(this.slide+'()',this.t); ou setTimeout(this.slide,this.t); ou this.setTimeout('slide()',this.t); ou setTimeout('slide('+this+')',this.t); ou setTimeout(this+'.slide()',this.t); etc ....
Question : qd tu vires le timeout et-ce que belObjet.slide() fonctionne ?
Ah! et comment tu l'arretes ?
-------------------------------------------------- function monObjet(t,truc,bidule){
this.t=t; this.truc=truc; this.bidule=bidule;
this.slide = function(){ ... setTimout('this.slide()',this.t); /*ligne xx */ } }
var belObjet = new monObjet(10,'machin','chose'); belObjet.slide(); --------------------------------------------------- firefox me revoie "ligne xx this.slide n'est pas une fonction". A priori je ne parvient pas non plus à appeller une autre méthode de cette façon.
reste plus qu'à faire comme d'ordinaire qd on n'y comprend pas trop ?
function monObjet(t,truc,bidule){ this.t=t; this.truc=truc; this.bidule=bidule;
-- ******************************************************* Stéphane MORIAUX et son vieux Mac *******************************************************
YD
Je ne parvient pas à construire une méthode d'un objet qui s'appelle elle meme à partir d'un settimout. [...] firefox me revoie "ligne xx this.slide n'est pas une fonction". A priori je ne parvient pas non plus à appeller une autre méthode de cette façon.
D'abord deux remarques : - setTimeout attend en 1er argument soit le prototype d'une fonction, soit une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse. - si tu utilises this au moment du timeout, this désignera l'objet global (c-à-d. l'objet window). Il est nécessaire d'effectuer une closure, obliger javascript à garder une référence vers le contexte d'exécution de l'objet que tu veux réutiliser.
Voilà un code qui fonctionne :
function monObjet(t,truc,bidule){ this.t=t; this.truc=truc; this.bidule=bidule; var _self=this;
var belObjet = new monObjet(1000,'machin','chose'); belObjet.slide();
Tu noteras l'emploi de la variable "privée" _self, qui contient une référence vers l'objet lui-même et qui force la closure, et l'utilisation de la syntaxe avec une définition pour le setTimeout.
Si tu lis l'anglais, tu trouveras plus d'infos là : <http://jibbering.com/faq/faq_notes/closures.html> et <http://www.litotes.demon.co.uk/js_info/index.html>
-- Y.D.
Je ne parvient pas à construire une méthode d'un objet qui s'appelle
elle meme à partir d'un settimout.
[...]
firefox me revoie "ligne xx this.slide n'est pas une fonction". A priori
je ne parvient pas non plus à appeller une autre méthode de cette façon.
D'abord deux remarques :
- setTimeout attend en 1er argument soit le prototype d'une fonction, soit
une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse.
- si tu utilises this au moment du timeout, this désignera l'objet global
(c-à-d. l'objet window). Il est nécessaire d'effectuer une closure,
obliger javascript à garder une référence vers le contexte d'exécution de
l'objet que tu veux réutiliser.
Voilà un code qui fonctionne :
function monObjet(t,truc,bidule){
this.t=t;
this.truc=truc;
this.bidule=bidule;
var _self=this;
var belObjet = new monObjet(1000,'machin','chose');
belObjet.slide();
Tu noteras l'emploi de la variable "privée" _self, qui contient
une référence vers l'objet lui-même et qui force la closure, et
l'utilisation de la syntaxe avec une définition pour le setTimeout.
Si tu lis l'anglais, tu trouveras plus d'infos là :
<http://jibbering.com/faq/faq_notes/closures.html> et
<http://www.litotes.demon.co.uk/js_info/index.html>
Je ne parvient pas à construire une méthode d'un objet qui s'appelle elle meme à partir d'un settimout. [...] firefox me revoie "ligne xx this.slide n'est pas une fonction". A priori je ne parvient pas non plus à appeller une autre méthode de cette façon.
D'abord deux remarques : - setTimeout attend en 1er argument soit le prototype d'une fonction, soit une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse. - si tu utilises this au moment du timeout, this désignera l'objet global (c-à-d. l'objet window). Il est nécessaire d'effectuer une closure, obliger javascript à garder une référence vers le contexte d'exécution de l'objet que tu veux réutiliser.
Voilà un code qui fonctionne :
function monObjet(t,truc,bidule){ this.t=t; this.truc=truc; this.bidule=bidule; var _self=this;
var belObjet = new monObjet(1000,'machin','chose'); belObjet.slide();
Tu noteras l'emploi de la variable "privée" _self, qui contient une référence vers l'objet lui-même et qui force la closure, et l'utilisation de la syntaxe avec une définition pour le setTimeout.
Si tu lis l'anglais, tu trouveras plus d'infos là : <http://jibbering.com/faq/faq_notes/closures.html> et <http://www.litotes.demon.co.uk/js_info/index.html>
-- Y.D.
frisch
D'abord deux remarques : - setTimeout attend en 1er argument soit le prototype d'une fonction, soit une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse.
Mmmh, je ne sais pas trop ce qu'est le prototype d'une fonction en Javascript, mais il me semble que setTimeout prend soit une valeur fonction, soit une valeur chaine de caractères (qu'il interprète comme eval).
-- Alain
D'abord deux remarques :
- setTimeout attend en 1er argument soit le prototype d'une fonction, soit
une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse.
Mmmh, je ne sais pas trop ce qu'est le prototype d'une fonction en
Javascript, mais il me semble que setTimeout prend soit une
valeur fonction, soit une valeur chaine de caractères (qu'il
interprète comme eval).
D'abord deux remarques : - setTimeout attend en 1er argument soit le prototype d'une fonction, soit une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse.
Mmmh, je ne sais pas trop ce qu'est le prototype d'une fonction en Javascript, mais il me semble que setTimeout prend soit une valeur fonction, soit une valeur chaine de caractères (qu'il interprète comme eval).
-- Alain
Raphaël Wils
D'abord deux remarques : - setTimeout attend en 1er argument soit le prototype d'une fonction, soit une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse. - si tu utilises this au moment du timeout, this désignera l'objet global (c-à-d. l'objet window). Il est nécessaire d'effectuer une closure, obliger javascript à garder une référence vers le contexte d'exécution de l'objet que tu veux réutiliser.
Voilà un code qui fonctionne :
function monObjet(t,truc,bidule){ this.t=t; this.truc=truc; this.bidule=bidule; var _self=this;
var belObjet = new monObjet(1000,'machin','chose'); belObjet.slide();
Tu noteras l'emploi de la variable "privée" _self, qui contient une référence vers l'objet lui-même et qui force la closure, et l'utilisation de la syntaxe avec une définition pour le setTimeout.
Effectivement ça marche (dans FF et IE). Je suis tout de meme interloqué parceque j'avais toujours lu que le premier argument de setTimeout était entre guillemet.
Si tu lis l'anglais, tu trouveras plus d'infos là : <http://jibbering.com/faq/faq_notes/closures.html> et <http://www.litotes.demon.co.uk/js_info/index.html>
je garde ça sous le coude dans mes marques pages.
-- Raphaël http://www.r-wils.com « Don't mean a thing if you ain't got that swing ! »
D'abord deux remarques :
- setTimeout attend en 1er argument soit le prototype d'une fonction, soit
une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse.
- si tu utilises this au moment du timeout, this désignera l'objet global
(c-à-d. l'objet window). Il est nécessaire d'effectuer une closure,
obliger javascript à garder une référence vers le contexte d'exécution de
l'objet que tu veux réutiliser.
Voilà un code qui fonctionne :
function monObjet(t,truc,bidule){
this.t=t;
this.truc=truc;
this.bidule=bidule;
var _self=this;
var belObjet = new monObjet(1000,'machin','chose');
belObjet.slide();
Tu noteras l'emploi de la variable "privée" _self, qui contient
une référence vers l'objet lui-même et qui force la closure, et
l'utilisation de la syntaxe avec une définition pour le setTimeout.
Effectivement ça marche (dans FF et IE). Je suis tout de meme interloqué
parceque j'avais toujours lu que le premier argument de setTimeout était
entre guillemet.
Si tu lis l'anglais, tu trouveras plus d'infos là :
<http://jibbering.com/faq/faq_notes/closures.html> et
<http://www.litotes.demon.co.uk/js_info/index.html>
je garde ça sous le coude dans mes marques pages.
--
Raphaël
http://www.r-wils.com
« Don't mean a thing if you ain't got that swing ! »
D'abord deux remarques : - setTimeout attend en 1er argument soit le prototype d'une fonction, soit une fonction. Pour ce que tu veux faire, c'est le 2e cas qui t'intéresse. - si tu utilises this au moment du timeout, this désignera l'objet global (c-à-d. l'objet window). Il est nécessaire d'effectuer une closure, obliger javascript à garder une référence vers le contexte d'exécution de l'objet que tu veux réutiliser.
Voilà un code qui fonctionne :
function monObjet(t,truc,bidule){ this.t=t; this.truc=truc; this.bidule=bidule; var _self=this;
var belObjet = new monObjet(1000,'machin','chose'); belObjet.slide();
Tu noteras l'emploi de la variable "privée" _self, qui contient une référence vers l'objet lui-même et qui force la closure, et l'utilisation de la syntaxe avec une définition pour le setTimeout.
Effectivement ça marche (dans FF et IE). Je suis tout de meme interloqué parceque j'avais toujours lu que le premier argument de setTimeout était entre guillemet.
Si tu lis l'anglais, tu trouveras plus d'infos là : <http://jibbering.com/faq/faq_notes/closures.html> et <http://www.litotes.demon.co.uk/js_info/index.html>
je garde ça sous le coude dans mes marques pages.
-- Raphaël http://www.r-wils.com « Don't mean a thing if you ain't got that swing ! »
YD
[...] Je suis tout de meme interloqué parceque j'avais toujours lu que le premier argument de setTimeout était entre guillemet.
La doc Client-Side JavaScript Ref. 1.3 (Netscape, pour NC 4.5 je crois) disait en 1999 :
----------------------------------------------------------------------- setTimeout Evaluates an expression or calls a function once after a specified number of milliseconds elapses. Method of window Implemented in JavaScript 1.0: evaluating an expression JavaScript 1.2: calling a function
expression A string containing a JavaScript expression. The expression must be quoted; otherwise, setTimeout calls it immediately. For example, setTimeout("calcnum(3, 2)", 25).
msec A numeric value or numeric string, in millisecond units.
function Any function.
arg1, ..., argN The arguments, if any, passed to function. ------------------------------------------------------------------------
Quant à IE, la fonction en 1er argument est supportée depuis la version 5.
-- Y.D.
[...] Je suis tout de meme interloqué
parceque j'avais toujours lu que le premier argument de setTimeout était
entre guillemet.
La doc Client-Side JavaScript Ref. 1.3 (Netscape, pour NC 4.5 je crois)
disait en 1999 :
-----------------------------------------------------------------------
setTimeout
Evaluates an expression or calls a function once after a specified number of milliseconds elapses.
Method of window
Implemented in
JavaScript 1.0: evaluating an expression
JavaScript 1.2: calling a function
expression
A string containing a JavaScript expression. The expression must be quoted; otherwise, setTimeout calls it immediately. For example, setTimeout("calcnum(3, 2)", 25).
msec
A numeric value or numeric string, in millisecond units.
function
Any function.
arg1, ..., argN
The arguments, if any, passed to function.
------------------------------------------------------------------------
Quant à IE, la fonction en 1er argument est supportée depuis la version 5.
[...] Je suis tout de meme interloqué parceque j'avais toujours lu que le premier argument de setTimeout était entre guillemet.
La doc Client-Side JavaScript Ref. 1.3 (Netscape, pour NC 4.5 je crois) disait en 1999 :
----------------------------------------------------------------------- setTimeout Evaluates an expression or calls a function once after a specified number of milliseconds elapses. Method of window Implemented in JavaScript 1.0: evaluating an expression JavaScript 1.2: calling a function
expression A string containing a JavaScript expression. The expression must be quoted; otherwise, setTimeout calls it immediately. For example, setTimeout("calcnum(3, 2)", 25).
msec A numeric value or numeric string, in millisecond units.
function Any function.
arg1, ..., argN The arguments, if any, passed to function. ------------------------------------------------------------------------
Quant à IE, la fonction en 1er argument est supportée depuis la version 5.