первых, это '' SetTimeout
второй, не передать строку. Реальное решение зависит от остальной части кода. Наиболее надежным способом было бы улавливать область действия:
var obj_array = something;
function trap(obj)
{
function exec() { foo(obj); }
return exec;
}
setTimeout(trap(obj_array), 1000);
trap возвращает функцию, у которой есть ваш массив, захваченный в своей области.Это общая функция, но чтобы сделать его специфическими для вашей проблемы, она может быть упрощена:
var obj_array = something;
function trap()
{
function exec() { foo(obj_array); }
return exec;
}
setTimeout(trap(), 1000);
или даже:
var obj_array = something;
function trap()
{
foo(obj_array);
}
setTimeout(trap, 1000);
и, наконец, конденсируется вниз:
var obj_array = something;
setTimeout(function() { foo(object_array); }, 1000);
EDIT : Мои функции (или, по крайней мере, одна итерация из них я нашел в резервной копии здесь)
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); }
};
ДАЛИ:
function test(a, b) { alert(a + b); }
Usage:
setTimeout(test.createAutoDelegate(1, 2), 1000);
ИЛИ ДАЛИ:
var o = { a:1, go : function(b) { alert(b + this.a); }}
ПРИМЕНЕНИЕ:
setTimeout(o.go.createDelegate(o,[5]), 1000);
//or
setTimeout(o.go.createDelegate(o).createAutoDelegate(5), 1000);
возможно в setInterval() – coderex
Да это possble и что это лучший способ сделать это – CMS
@CMS: он работает спасибо :-) – coderex