我不知道是否有避免複製對象的引用,當你需要創建一個簡單的對象,其中有一個嵌入對象的數組。情況如下:我有服務器接受JSON並應用一些邏輯,然後存儲DB中的對象。可以說我的表單是用DB保存團隊的。服務器接受團隊爲json。該團隊有一組TeamMember對象,我的表單有一個簡單的字段用於輸入團隊成員信息並將其添加到團隊teamMembers數組中。現在問題出在了,當我將一個團隊成員添加到數組列表中並且想要添加另一個團隊成員時,當我在該字段中輸入時,添加的成員也會被更改!我知道原因以角度深度複製對象?
$scope.addTeamMember=function(teamMember){
$scope.team.teamMembers.push(teamMember);
}
,這是因爲我把相同的參考到teamMembers陣列,所以我有相同的對象中,增加好幾倍。 爲了避免這種情況,我應該創建一個新的團隊成員對象,複製所有teamMember屬性並將其添加到數組中。
$scope.addTeamMember=function(teamMember){
var newTeamMember; /*<--- copy teamMember */
$scope.team.teamMembers.push(newTeamMember); /*and add newTeamMember*/
}
爲什麼不推teamMember?爲什麼要複製 – landed
由於JavaScript對象是通過引用傳遞的,如果將teamMember推送到數組並最終修改它,那麼原始對象也會被修改。 'var animal = {Name:'dog'};'然後我們將它添加到一個數組兩次。 'var array = [];的Array.push(動物); array.push(動物);'然後我們修改陣列中的第二個動物。 'array [1] .Name ='cat';'現在,所有的動物都被命名爲'cat'。 '的console.log(animal.Name); console.log(array [0];'Output:'cat'for both。 –