apply小结
程序员文章站
2022-05-31 22:09:09
...
我需要使用apply吗?什么时候用?
下面是lodash.js里面一个节流函数的内部实现。可以看到当你使用某些高阶函数的时候,对于传入的参数无法确定时,此刻apply方法可以帮助你,当然你也可以采用es6新的展开语法去实现。
var throttle = function (fn, interval) {
var _self = fn;
var _interval = interval;
var _timer;
var firstTime = true;
return function () {
var args = arguments,
__me = this;
if (firstTime) {
//为什么我不直接使用fn()?,因为这个方法会接受参数event事件对象,所以要用apply的方式传递参数
//fn();
_self.apply(this, args);
//_self(...args);
return firstTime = false;
}
if (_timer) {
return false;
}
_timer = setTimeout(() => {
clearInterval(_timer);
_timer = null;
_self.apply(null, args);
}, _interval || 500);
}
}
window.onresize = throttle(updateDate, 500);
function updateDate(e) {
console.log(arguments);
};
这只是其中一个用法,当然你还可以用他来干别的事,比如借用某些对象的方法:
const numbers = [5, 6, 2, 3, 7];
const max = Math.max.apply(null, numbers);
最重要的一点apply会把你传入的第二个对象展开。
上一篇: 二、Node概述
下一篇: boost库安装(linux)