亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

copy存在的意義

copy = options[name];

//覆蓋拷貝

target[name] = copy;

為什么不能直接寫成 target[name]=options[name]

正在回答

2 回答

以下是我的理解,不知道對不對

貌似是深淺拷貝的問題

copy = options[name]其實新建了一個與?options[name]相同內容的對象,這樣使用target[name]時候就不會影響到options[name]的值,是深拷貝;

target[name]=options[name]的話則是淺拷貝,target[name]其實是options[name]的引用,target[name]改變,options[name]也會隨著改變。

1 回復 有任何疑惑可以回復我~
#1

杰楓 提問者

帶有copy是不是也可以這么寫:target[name] = copy= options[name] ,這樣話都是把options[name]的引用賦給target[name] ,至于深淺拷貝,確實我還是不明白哎
2016-08-02 回復 有任何疑惑可以回復我~
#2

慕無忌2114720

你的理解有問題,對于復雜對象類型的傳值是引用傳值,而不是拷貝傳值。所以這里的copy變量只是引用了options[name]對象,并不是拷貝。
2019-07-01 回復 有任何疑惑可以回復我~

和target[name] = options[name]沒有區別,這里的copy沒任何作用。

估計老師是參考jquery源代碼寫的,但源代碼中copy變量還做了其他操作。


1 回復 有任何疑惑可以回復我~
#1

chen87870098

我同意,這里不是深拷貝,var deepCopy= function(source) { var result={}; for (var key in source) { result[key] = typeof source[key]===’object’? deepCoyp(source[key]): source[key]; } return result; } 這是一個深拷貝的寫法,里面根本沒有用到copy這種東西
2017-01-11 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

copy存在的意義

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號