d'abord, il est 'setTimeout'
En second lieu, ne passez pas une chaîne. La vraie solution dépend du reste du code. Façon la plus robuste serait de piéger la portée:
var obj_array = something;
function trap(obj)
{
function exec() { foo(obj); }
return exec;
}
setTimeout(trap(obj_array), 1000);
piège retourne une fonction qui a votre choix pris dans son champ d'application.Cette fonction est générique, mais pour le rendre spécifique à votre problème, il peut être simplifié:
var obj_array = something;
function trap()
{
function exec() { foo(obj_array); }
return exec;
}
setTimeout(trap(), 1000);
ou même:
var obj_array = something;
function trap()
{
foo(obj_array);
}
setTimeout(trap, 1000);
et enfin condensé jusqu'à:
var obj_array = something;
setTimeout(function() { foo(object_array); }, 1000);
EDIT : Mes fonctions (ou au moins 1 itération d'entre eux j'ai trouvé dans une sauvegarde ici)
Function.prototype.createDelegate = function(inst, args) {
var me = this;
var delegate = function() { me.apply(inst, arguments); }
return args ? delegate.createAutoDelegate.apply(delegate,args) : delegate;
};
Function.prototype.createAutoDelegate = function() {
var args = arguments;
var me = this;
return function() { me.apply({}, args); }
};
DONNÉ:
function test(a, b) { alert(a + b); }
USAGES:
setTimeout(test.createAutoDelegate(1, 2), 1000);
OU DONNÉ:
var o = { a:1, go : function(b) { alert(b + this.a); }}
USAGES:
setTimeout(o.go.createDelegate(o,[5]), 1000);
//or
setTimeout(o.go.createDelegate(o).createAutoDelegate(5), 1000);
est-il possible dans setInterval() – coderex
Oui, il est possble et c'est la meilleure façon de le faire – CMS
@CMS: il fonctionne grâce :-) – coderex