`
- 浏览:
66235 次
- 性别:
-
<script language="javascript">
/**//*
功能:修改 window.setTimeout,使之可以传递参数和对象参数
使用方法: setTimeout(回调函数,时间,参数1,,参数n)
*/
var __sto = setTimeout;
window.setTimeout = function(callback,timeout,param)
{
var args = Array.prototype.slice.call(arguments,2);
var _cb = function()
{
callback.apply(null,args);
}
__sto(_cb,timeout);
}
///测试代码
function aaaa(a)
{
alert(a);
}
function aaaaa(a,b,c)
{
alert(a + b + c);
}
var a = new Object();
window.setTimeout(aaaa,1000,a);
window.setTimeout(aaaaa,2000,a,6,7);
</script>
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在这个例子中,我们使用箭头函数确保`sayHello`方法的`this`指向`obj`对象,然后传递参数`'Jane'`。两秒后,控制台将输出`Hello, John, Jane`。 值得注意的是,`setTimeout`返回一个唯一的ID,可以通过`...
在上述问题描述中,用户尝试使用setTimeout("fun(参数)", 1000)的方式传递参数,但遇到了错误。在JavaScript中,定时器函数的字符串形式已经被废弃,因为它们容易引发错误和安全漏洞,现在推荐使用函数引用和apply...
但昨天在写代码的时候发现当第一个参数是函数调用的时候,不能向被调函数传递参数。这真是个非常严重的问题,我排查了好久才发现问题,浪费了N多时间啊。。 后来上网查了查,这其实是IE的一个BUG。解决方法有很多,...
使用函数名字符串的方式可以传递参数,但这种方法的缺点是参数不能在运行时动态改变。例如: ```javascript setInterval("foo(id)", 1000); ``` 这里,`id` 的值在定时器创建时就被固化了,无法在之后的执行中...
这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。 我们常用的使用场景是: 代码如下:window.setTimeout(...
/****************************************************** // // 功能: 修改window.setTimeout,使之可以传递参数和对象参数 // 使用方法: window.setTimeout(回调函数,延迟时间,参数1,参数n) // ******************...
// 使用 apply 方法调用原始函数并传递参数 }; return _st(f, mDelay); // 使用保存的原始 setTimeout 延迟执行 f 函数 } return _st(fRef, mDelay); // 如果是其他类型的参数,使用原始的 setTimeout }; ``` ...
在这个例子中,`message`就是传递给`setTimeout`的参数。当3秒后回调函数被执行时,`message`会被作为参数传递给`console.log`函数。 #### 三、循环中的`setTimeout`与闭包问题 当在循环中使用`setTimeout`时,...
总结来说,当使用setTimeout函数传递参数时,如果需要调用局部变量,则应避免传递字符串参数,而是直接传递函数引用或使用匿名函数封装。这种方法不仅避免了作用域相关的问题,也增强了代码的安全性。开发者在实际...
然而,当需要在setTimeout或setInterval中调用函数并传递参数时,问题就会出现。直接在字符串形式的方法中传递参数是不行的,因为Timer线程无法访问非全局变量。例如: ```javascript function delayRun(param) { ...
然而,如果需要向这个函数传递参数,问题就出现了。有以下两种常见策略来解决这个问题: 1. **匿名函数包裹**: 在这种情况下,我们可以创建一个匿名函数,将参数包含在其中,并调用目标函数。如下所示: ```...
在实际应用中,我们常常需要向`setTimeout`传递参数,以便在函数执行时使用这些参数。在提供的文档中,有这样一段代码: ```javascript function timedMsg() { var a = "dd"; var t = setTimeout(function() { ...
- `param1, param2, ...`: 可选参数,可以传递给`function`的值。 当调用`setTimeout`时,JavaScript会安排在指定延迟后执行提供的函数。这个延迟不是精确的,因为它依赖于浏览器的事件循环和其他正在运行的任务。...
然而,一个常见的问题是在尝试使用`setTimeout()`调用带参数的函数时,参数往往无法正确传递。这是因为`setTimeout()`默认只接受一个函数引用和一个延迟时间作为参数,而不直接支持传递额外的参数。这个问题可以通过...