对call的理解
f.call(o,para1,para2,....);
f: 是调用的函数
o:是函数f中this指向的对象
para1,para2,...:是调用 f 函数时传入的实参
eg:
function Father(name){
this.name = name || '名字'
}
function Son(){};
let son = new Son();
Father.call(son)
console.log(son.name) //名字
console.log(Son.name) //undefined
Father.call(son)中call的作用是,调用Father函数,使Father函数中的this指向为son,去执行函数;也就是改变了Father函数中this的指向。
f.call(obj,params1,params2) === f.bind(obj,params1,params2)()
call和bind 的区别: call 和applay 都是调用后立即执行的 ,bind调用之后返回的是原函数需要再调用一次
防抖函数debounce:
function debounce(fn,time){
var timer; return funtion(){ timer&&cleanInterval(timer) timer = setTimeout(()=>{ fn.applay(this,argument); },time) ; } }
节流函数 throttle:
function thorotte(fn,time){ var lastTime = 0; return function(){ if(new Date().getTime() - lastTime >time){ fn.apply(this,argument) lastTime = new Date().getTime() } } }