免责声明:(1)我的背景是Java/C#,我只是在上周开始深入研究JavaScript。 (2)我知道_.mixin()方法。JavaScript(Underscore.js)扩展功能
这不是项目的关键,而是我无法让我的周围对象继承头的Javascript。
例如,试图增加与_.keyFilter功能(我知道我可以用地图来实现类似的东西)返回其满足评价功能键的列表underscore.js。我可以实现与_.mixin()方法的结果:)
除了直接拖放功能到源代码,_.mixin(
_.mixin({ filterKey : function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
_.each(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)){
results[results.length] = index;
}
});
return results;
}});
但是,我不知道我明白为什么我可以“T只是增加下划线,在我的脚本文件如下:
_.keyFilter = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
each(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) results[results.length] = index;
});
return results;
};
这样做,然后试图与调用它:
_.chain(myList).keyFilter(evalFunction);
我得到以下异常:
'Uncaught TypeError: Object [object Object] has no method 'keyFilter'
注意,那上面的方法做工作时,我将其放到underscore.js的源代码。
于是我尝试使用原型(我还没有完全掌握)回到我的脚本文件:
var keyFilter = _.prototype.keyFilter = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
each(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) results[results.length] = index;
});
return results;
};
但这抛出同样的异常。 (我认为下面的var正被加到脚本的顶部,这就是为什么我也尝试过这种做法,而且没有上面的传递任务)。
解释将不胜感激。