提取周围方法的 JavaScript 版本
Javascript version of extract surrounding method
我一直在读Ruby重构的书(Fields,Harvie,Fowler)。他们提到了提取周围方法操作,如果您的方法中间部分彼此不同,则可以使用该操作来避免重复。
def number_of_descendants_named(name)
count_descendants_matchin { |descendant| descendant.name == name }
end
def number_of_living_descendants
count_descendants_matching { |descendant| descendant.alive? }
end
def count_descendants_mathing(&block)
children.inject(0) do |count, child|
count += 1 if yield child
count + child.count_descendants_matching(&block)
end
end
我相信你明白了。你会如何用Javascript做类似的事情?
Javascript 也有闭包,所以这很容易,只需将块转换为匿名函数,代码实际上是相同的:
var number_of_descendants_named = function(name) {
return count_descendants_matching(function(descendant) {
return descendant.name == name;
});
};
var number_of_living_descendants = function(descendant) {
return count_descendants_matching(function(descendant) {
return descendant.alive();
});
};
var count_descendants_mathing = function(cb) {
// reduce: use underscore or any other functional library
return somelib.reduce(children, 0, function(count, child) {
return count + (cb(child) ? 1 : 0) + child.count_descendants_matching(cb)
});
};
这种函数式风格,所有内容都是要返回的表达式,在普通的Javascript中非常冗长,但是一些altJS语言(例如Coffeescript)简化了它。
相关文章:
- 如何设置jsfiddle's的javascript版本
- 什么是从html表单发送数据的纯javascript版本
- as3中enter_frame的javascript版本
- 调试时更改 JavaScript 版本
- 提取周围方法的 JavaScript 版本
- 如何知道我的NODEJS中的哪个javascript版本
- JavaScript版本如何与ECMAScript版本关联
- HTA 中的 JavaScript 版本
- 对nodejs版本和javascript版本感到困惑
- 有没有JavaScript版本的Reflection::newInstaceArgs(args)
- .click() 的原始 JavaScript 版本
- 在哪里可以找到android 4.2.2闹钟中的时间选择器的Javascript版本
- 自动javascript版本控制,避免浏览器缓存清理
- 如何使用javascript检测javascript版本一致性
- reddit投票算法,javascript版本
- Javascript版本控制以避免缓存,这些实践的区别
- jQuery' $var = ($var)语句的javascript版本是什么?
- IE9中iframe内的Javascript版本
- 香草JavaScript版本的jQuery .click
- 检测JavaScript版本