JavaScript-js 实现每隔一段时间调用指定的函数功能

发布于 2016-12-24 22:59:48 字数 140 浏览 999 评论 3

比如我自定义一个myCall(funcName,arg),当我调用myCall('alert','aaa')时就能实现alert('aaa').这里myCall可以是(funcName,arg1,arg2...)

请问这个myCall如何写呀,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜无邪 2017-10-09 15:51:56

代码已测试,如下:

var savedValue;

function myCall(funcName)
{
var args = Array.prototype.slice.call(arguments, 1);
var func = window[funcName];

window.setTimeout(function() {
savedValue = func.apply(this, args);
}, 1000);
}

泛泛之交 2017-08-21 01:43:57

我这也有一方法,虽然没有 张洪保 的简便些,但是也可以实现:
function myCall(funcName){
var args=[];
var arg_len = arguments.length;
for(var i=1;i<arg_len;i++){
args.push(arguments[i]);
}
return function(){
funcName.apply(this,args);
}
}
window.setInterval(myCall(alert,"aaa"),5000);

虐人心 2017-06-15 10:31:16

我给你写了一个支持数组参数,和传时间参数的方法,JavaScript不是很擅长,功能实现了,但是总感觉写得不好。

<script language="javascript">
var timer = null;
/**
* 函数名myCall
* @params string func 调用函数名
* @params mixd params 调用函数名的参数列表(字符串或者数组)
* @params int timeout 定时间隔
* @return null
*/
function myCall(){
var arr = Array.prototype.slice.call(arguments);
var func = arr.shift();
var args = arr.shift();
var timeout = arr.shift();
if(args == null) args = '';
if(args && !(params.propertyIsEnumerable('length')) && typeof args === 'object' && typeof args.length === 'number'){

}else{
args = new Array(args.toString());
}
window.setTimeout(function() {
timer = window[func].apply(this, args);
}, timeout);
}

//测试
var params = "测试";
myCall('alert', params, 1000);

var params = new Array('请输入姓名', 'jack');
myCall('prompt', params, 3000);
</script>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文