[英]Best practice to extend objects in underscore.js
我知道擴展對象是通過
_.extend(parent, child);
方法。
我在網上看到過不同的地方,人們在underscore.js中以特殊的方式擴展對象
_.extend({}, this, child);
他們為什么這樣做?
根據下划線文檔 ,_.extend方法的api是
_.extend(destination, *sources)
第一個樣本
_.extend(parent, child);
在此示例代碼中,您實際上是將屬性從子對象擴展到父對象。 這里修改了父對象。
第二個樣本
_.extend({}, parent, child);
如果您不想修改父對象,並且仍然需要父和子屬性。 你可以用這個。 在這里,您將父對象和子對象擴展為新對象。
舉個例子:
myConfig = { name: 'bob' }
yourConfig = { name: 'sam' }
_.extend(myConfig, yourConfig);
現在, myConfig
被破壞了。 我已經覆蓋了myConfig.name
的原始值,我永遠無法取回它。
為了保留myConfig
和yourConfig
,我需要將它們組合成第三個對象:
myConfig = { name: 'bob' }
yourConfig = { name: 'sam' }
sharedConfig = _.extend({}, myConfig, yourConfig);
Underscore的extend方法會覆蓋傳遞給它的第一個參數。 但大多數時候你不想這樣做。 你只想要另一個對象,其中第二個用第一個方法擴展。
因此,您將一個空對象作為結果的容器對象傳遞。
var grandChild = _.extend({}, parent, child);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.