var updateIconPathRecorsive = function (item) {
if (item.iconSrc) {
item.iconSrcFullpath = 'some value..';
}
_.each(item.items, updateIconPathRecorsive);
};
updateIconPathRecorsive(json);
有没有更好的方法不使用功能? 我不想将函数从调用中移开,因为它就像一个复杂的函数。我可能希望能够写下以下内容:
_.recursive(json, {children: 'items'}, function (item) {
if (item.iconSrc) {
item.iconSrcFullpath = 'some value..';
}
});
答案 0 :(得分:6)
您可以使用立即调用的命名函数表达式:
(function updateIconPathRecorsive(item) {
if (item.iconSrc) {
item.iconSrcFullpath = 'some value..';
}
_.each(item.items, updateIconPathRecorsive);
})(json);
但您的代码段也很好,不会cause problems in IE。
下划线没有递归包装函数,它也不提供Y-combinator。但如果你愿意,你当然可以轻松create one yourself:
_.mixin({
recursive: function(obj, opt, iterator) {
function recurse(obj) {
iterator(obj);
_.each(obj[opt.children], recurse);
}
recurse(obj);
}
});