簡體   English   中英

對象JavaScript中的奇怪行為數組

[英]Strange behavior array in object JavaScript

為什么b.first [0]返回“ t”,如何避免這種情況?

我在b.first [0]中需要安全的“ q”

var extend = function(o,p){
    for(prop in p){
        o[prop] = p[prop];
    }
    return o;
};

var a = {first:['q','w']};
var b = {};

extend(b,a);

document.write(a.first[0]); //q
document.write(b.first[0]); //q

a.first[0] = 't';

document.write(a.first[0]); // t
document.write(b.first[0]); // t ?????????????????????

這是一個與將b擴展a不會從a重新創建數據的概念有關的問題。 如果某些數據是對象(例如Array),那么它只是“指向”該數組,而不是創建一個新的相同數組。 本質上,您將存儲兩個指向同一數組的指針,因此,當您更改一個指針時,您將更改另一個指針。

這是一個答案,更詳細地討論了“克隆” Javascript對象的想法。

https://stackoverflow.com/a/728694/1570248

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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