`

向setTimeout传递函数参数

阅读更多

向setTimeout传递函数参数
 
 也许你过去在setTimeout中传参数一直是这样

setTimeout("pass(" + argu + ")",1000)

这样只能传字符串,对传递object就无能为力了,需要大费文章.然而别忘了,第一个参数还可以是function!!!

看以下代码实现向里面的function 传参数

<script type="text/javascript">
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) {
 if(typeof fRef == 'function'){
  var argu = Array.prototype.slice.call(arguments,2);
  var f = (function(){ fRef.apply(null, argu); });
  return _st(f, mDelay);
 }
 return _st(fRef,mDelay);
}

function test(x){
 alert(x);
}
window.setTimeout(test,1000,'fason');
</script>

怎样?是不是很方便了?代码其实就很简单,重载了一下window.setTimeout,用apply去回调前面的function.

还没有用过apply,call的可以去查资料

 

分享到:
评论

相关推荐

    javascript setTimeout()传递函数参数(包括传递对象参数)

    // 正确使用 setTimeout 来传递函数和参数 setTimeout(myFunc, 1000, '参数值'); ``` 使用apply()或call()方法也可以在setTimeout的回调函数中传递多个参数: ```javascript function myFunc(arg1, arg2) { // .....

    jQuery setTimeout传递字符串参数报错的解决方法

    总结来说,当使用setTimeout函数传递参数时,如果需要调用局部变量,则应避免传递字符串参数,而是直接传递函数引用或使用匿名函数封装。这种方法不仅避免了作用域相关的问题,也增强了代码的安全性。开发者在实际...

    JavaScript中setTimeout和setInterval函数的传参及调用_.docx

    setTimeout 函数用于在指定的时间点执行某个函数,语法格式为 `setTimeout(func, delay, [arg1, arg2, ...])`,其中 `func` 是要执行的函数,`delay` 是延迟的时间,`arg1, arg2, ...` 是要传递给函数的参数。...

    JavaScript实现向setTimeout执行代码传递参数的方法

    本文实例讲述了JavaScript实现向setTimeout执行代码传递参数的方法。分享给大家供大家参考。具体分析如下: setTimeout函数是javascript中实现动态效果最关键的函数。但昨天在写代码的时候发现当第一个参数是函数...

    js中settimeout方法加参数.docx

    在`setTimeout`中,除了必填的函数和延迟时间外,还可以向函数传递额外的参数。这些参数会在回调函数执行时作为参数传递给它。例如: ```javascript function timedMsg(message) { var t = setTimeout(function() ...

    关于JS中setTimeout()无法调用带参函数问题的解决方法

    了解和掌握这些方法能够帮助我们在进行JavaScript编程时,更好地处理定时器与函数参数传递的问题。同时,本文也提到了一些JavaScript相关的专题内容,供有兴趣深入了解JavaScript的读者参考,如JavaScript切换特效、...

    JS中setInterval、setTimeout不能传递带参数的函数的解决方案

    然而,一个常见的问题是,当直接使用函数名作为参数时,这两个函数都无法直接传递额外的参数。这在实际开发中可能会带来不便,因为往往需要将数据或者变量传递给定时器执行的函数。以下是一些解决这个问题的方法: ...

    js中settimeout方法加参数的使用实例.docx

    在实际应用中,我们常常需要向`setTimeout`传递参数,以便在函数执行时使用这些参数。在提供的文档中,有这样一段代码: ```javascript function timedMsg() { var a = "dd"; var t = setTimeout(function() { ...

    使用自定义setTimeout和setInterval使之可以传递参数和对象参数

    /****************************************************** // // 功能: 修改window.setTimeout,使之可以传递参数和对象参数 // 使用方法: window.setTimeout(回调函数,延迟时间,参数1,参数n) // ******************...

    js setTimeout 参数传递使用介绍

    然而,如果需要向这个函数传递参数,问题就出现了。有以下两种常见策略来解决这个问题: 1. **匿名函数包裹**: 在这种情况下,我们可以创建一个匿名函数,将参数包含在其中,并调用目标函数。如下所示: ```...

    关于JS中setTimeout()无法调用带参函数问题的解决方法.docx

    然而,一个常见的问题是在尝试使用`setTimeout()`调用带参数的函数时,参数往往无法正确传递。这是因为`setTimeout()`默认只接受一个函数引用和一个延迟时间作为参数,而不直接支持传递额外的参数。这个问题可以通过...

    js setTimeout 常见问题小结

    二、向`setTimeout`传递参数 `setTimeout`的回调函数可以接受一个函数,该函数可以接收参数。在示例中,`init`函数中的`setTimeout`传递了一个匿名函数,这个函数内部调用了`searchJDWater`并传入了`url`参数。这是...

    JavaScript中setTimeout和setInterval函数的传参及调用

    在某些情况下,我们可能需要向setTimeout或setInterval传递参数,但又不想把函数定义在全局作用域。这时候可以使用匿名函数来封装这些参数,并在匿名函数内调用目标函数。例如: ```javascript var num = 2; ...

    setTimeout和setInterval的浏览器兼容性分析

    - **不支持函数参数传递**:在IE中,通过 `setTimeout` 调用函数时,不能直接将参数传递给该函数。这意味着,如果你试图通过 `setTimeout` 传递参数给函数,则函数内部将无法获取这些参数。 示例代码如下: ```...

Global site tag (gtag.js) - Google Analytics