免责声明:(1)我的背景是Java/C#,我上周才开始深入研究JavaScript.(2)我知道_.mixin()方法.
这不是项目关键,而是我无法在Javascript中了解对象继承.
例如,尝试使用_.keyFilter函数(我意识到我可以使用map来实现类似的东西)来扩充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;
}});
Run Code Online (Sandbox Code Playgroud)
但是,我不确定为什么我不能简单地在我的脚本文件中使用以下内容来增加下划线:
_.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;
};
Run Code Online (Sandbox Code Playgroud)
这样做,然后尝试调用它:
_.chain(myList).keyFilter(evalFunction);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
'Uncaught TypeError: Object …Run Code Online (Sandbox Code Playgroud)