簡體   English   中英

在underscore.js中擴展對象的最佳實踐

[英]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的原始值,我永遠無法取回它。

為了保留myConfigyourConfig ,我需要將它們組合成第三個對象:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM