5.18 matcher
5.18.1 语法
_.matcher(attrs)
5.18.2 说明
返回一个断言函数
这个函数传入对象,判断的对象是否匹配attrs,返回布尔值
5.18.3 代码示例
示例一:基本用法
//返回的函数可判断是否匹配{age: 10}
var isOldTen = _.matcher({age: 10}); //返回一个函数
isOldTen({age : 9}); //=> false
isOldTen({age : 10}); //=> true
示例二:应用在遍历上
var isMale = _.matcher({sex: 'm'});
var isFemale = _.matcher({sex: 'f'});
var list = [{
name: 'kyo',
sex: 'm'
}, {
name: 'terry',
sex: 'm'
}, {
name: 'atina',
sex: 'f'
}];
//迭代器独立出来可多次使用
var males = _.filter(list, isMale);
var females = _.filter(list, isFemale);
5.18.3 返回的函数是稳定的
https://github.com/jashkenas/underscore/issues/1729
var object = {name: 1};
var func = _.matcher(object);
//之后object改变了也不影响。
object.name = 2;
func({name: 1}); //=> true
5.18.4 null和undefined为传入对象
//不过空对象的attrs好像没什么意义
_.matcher({})(null); //=> true
_.matcher({a: 1})(null) //=> false
_.matcher({})(undefined); //=> true
_.matcher({a: 1})(undefined) //=> false