您的位置:首页 > 移动开发

bind,call,apply/setTimeout, setInterval传递参数和取消

2014-12-17 17:07 423 查看
bind,call,apply

func.call(obj, arg1, arg2, ..., argn);

func.apply(obj, [arg1, arg2, ..., argn]);

var newFun = func.bind(obj, arg1, arg2, ..., argn);

newFun();

call和apply是立即执行方法,而bind是产生一个新方法用于后续调用。

setTimeout, setInterval传递参数和取消

var st = setTimeout(function,milliseconds,param1,param2,...);

var si = setInterval(function,milliseconds,param1,param2,...);

clearTimeout(st);

clearTimeout(si);

param1,param2,...是可选项,用于给function提供额外的参数,但是注意,该特性在IE9及之前的IE不能使用!!

但是若要用通用的方法给function传递参数该怎么做?下面:

1. 简单参数,如string:

setTimeout("func(" + param + ")", time);

2. 对象参数,当然简单参数也适用:

function tt(t){

console.log(t)

};

var ss = 123;

setTimeout(function(){

tt(ss);

}, 1000);

setTimeout(function(ss){//注意,此方式无法将ss传递进去,将会输出undefined!

tt(ss);

}, 1000);

一个需要注意的问题

function tt(){

console.log(123)

};

setTimeout(tt(), 1000);

这样tt会立即执行,而不是等一秒后执行!在程序执行到setTimeout时会先执行一次tt,然后等1秒再执行一次tt的return,如果tt方法返回一个新的方法tt2,那么tt2会在1秒后执行。

两个有关setTimeout中参数传递问题的讨论,感觉方法有点笨,完全可以按照2来处理:
http://boleyn.iteye.com/blog/1144015 http://www.cnblogs.com/longjxchina/archive/2011/06/03/2072076.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: