Underscore 对象封装
- 通过
_(obj)
方式,封装成underscore对象,此后可以方便的使用原型中的方法 - 通过
_(obj).value()
依旧能够获得原生数据
优先调用javascript1.6
内置方法
underscore自动完成,
1.6
版本是05年更新的一个版本
改变命名空间
释放
_
的使用权利
var us = _.onConflict()
链式操作
// 使用
var arr = [10,20,30];
_(arr)
.chain()
.map(function(item){return item++;})
.first()
.value();
// underscore 中该方法的关键函数
var result = function (obj,chain) {
return chain ? _(obj).chain() : obj;
}
扩展Underscore
下列方法,将追加到underscore的原型对象上
_.mixin({
method1: function (object) {
// tode
},
method2: function (arr) {
// todo
}
});
遍历集合
underscore中这两个方法item是函数的第一个参数
_(arr).map
_(arr).each()
函数节流
-
_(function).debounce()
关注函数执行的间隔 -
_(function).throttle()
关注函数执行的频率
输入提示框
// 当 200ms 内 query 方法没有被执行过,再触发时就会执行
var query = _(function () {
// 查询操作
}).debounce(200);
$('#search').on('keypress',query);;
边滚动边加载
// 每 500ms 执行一次
var query = _(function() {
// 在这里进行查询操作
}).throttle(500);
$(window).bind('scroll', query);
模板解析
模板解析一般分成两种
// 一次性模板,数据匹配
var html = _.template(tpl,data);
divEle.html(html);
// 模板相同,数据不同
var render = _.template(tpl);
var html = render(data);
divEle.html(html);