2012-03-03 67 views
2

jQuery的扩展函数有递归扩展的选项,我在创建json配置文件时使用。我可以看到下划线有一个extend function,但它甚至没有提及递归。我认为这意味着它不会递归地扩展,但是我认为在将它实现到我的项目并浪费大量时间之前,我会问这里。下划线的扩展函数是否递归地扩展(或者可以选择这样做)?

+1

的可能的复制[递归/深扩展/在Underscore.js分配?(http://stackoverflow.com/questions/14843815/recursive-deep-extend-assign-in-underscore-js) – dskrvk 2016-04-15 15:40:41

+0

@dskrvk等等......是不是将近一年,我的问题较旧的? – Hubro 2016-04-18 07:29:50

+0

这是,但另一个有更多/更好的答案和更多的选票。 – dskrvk 2016-04-18 17:40:40

回答

1

你的假设是正确的,下划线的extend不递归扩展。该implementation is rather simple

_.extend = function(obj) { 
    each(slice.call(arguments, 1), function(source) { 
    for (var prop in source) { 
     obj[prop] = source[prop]; 
    } 
    }); 
    return obj; 
}; 

你最有趣的部分是什么是for循环中,一个简单的非递归分配:

obj[prop] = source[prop]; 
+0

令人失望,但由于 – Hubro 2012-03-03 07:21:34

+0

@Codemonkey:你也许可以借用jQuery的不会有太大困难,虽然,我猜想,'$ .extend'会相当好孤立,容易提取。 – 2012-03-03 07:35:20

+0

已经进行开发了:-) – Hubro 2012-03-03 07:40:13