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