2012-03-03 23 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