我正在尝试学习backbone.js 和(通过扩展)underscore.js,但我在理解一些约定时遇到了一些困难。在编写一个简单的搜索过滤器时,我认为像下面这样的东西会起作用:
var search_string = new RegExp(query, "i");
var results = _.filter(this, function(data){
return search_string.test(data.get("title"));
}));
但是,事实上,为了使它工作,我需要将我的过滤器功能更改为以下内容:
var search_string = new RegExp(query, "i");
var results = _(this.filter(function(data){
return search_string.test(data.get("title"));
}));
基本上,我想了解为什么第二个示例有效,而第一个示例无效。根据文档(http://documentcloud.github.com/underscore/#filter),我认为前者会起作用。或者这可能只是反映了我的一些旧的 jQuery 习惯......有人可以为我解释一下吗?