我见过类似
的内容_.defer(function(){
$elem.attr("src", $elem.data("delayed-src"));
});
// what is "_.defer (function)"?
和
$(window).on("scroll.load-media", _.throttle(function() {
maybeLoadMedia(600);
}, 100));
// what is "_.throttle (function)"?
默认情况下是否在JavaScript中?或者我是否必须添加underscore.js插件? http://documentcloud.github.io/underscore/
由于我不想使用除jQuery之外的其他js,如何用纯javascript(或jquery)代码替换这些函数? (我正在实施延迟加载的js。请参阅http://blog.pamelafox.org/2014/01/improving-front-page-performance.html。)
或者是undercore.js只是有用???我应该用吗?
答案 0 :(得分:2)
如您所知,_
变量由Underscore.js设置,而不是由JavaScript运行时本身提供。
Underscore.js非常受欢迎,它是"最受欢迎的#34;在npm registry。 Wappalyzer也lists a lot very well known sites using it。甚至还有像Lo-Dash这样的兼容克隆,你可以肯定它会存在很长时间。
答案 1 :(得分:-1)
延迟 _.defer(function,* arguments) 延迟调用函数直到当前调用堆栈已清除,类似于使用延迟为0的setTimeout。用于在不阻止UI线程更新的情况下以块的形式执行昂贵的计算或HTML呈现。如果传递可选参数,则在调用它们时它们将被转发到该函数。
_.defer(function(){alert('deferred');}); //在警报运行之前从函数返回。
节流 _.throttle(功能,等待,[选项]) 创建并返回传递函数的新的受限制版本,当重复调用时,每次等待毫秒最多只调用一次原始函数。对于速度限制事件非常有用,这些事件的发生速度比您能跟上的速度要快。
默认情况下,第一次调用时,throttle会立即执行该功能,如果在等待期间再次调用该功能,则一旦该时间段结束,就会立即执行该功能。如果您想要禁用前沿调用,请传递{leading:false},如果您想在后端禁用执行,请传递 {trailing:false}。
var throttled = _.throttle(updatePosition,100); $(窗口).scroll(节流);