0

こんにちは、コードにこの簡単なスクリプトがあります。

var c = [{a: 'apple'},{b: 'ball'},{c: 'ball'},{d: 'ball'}];
console.log(c); //prints 3 objects
var d = c; 
d.splice(0, 3);         
console.log(c); //prints 1 object        
console.log(d); //prints 1 object 

私にとって奇妙なのは、スプライスの後のcとdの両方が同じ結果になることです(cから3つのオブジェクトを削除した後、dからのみ削除しましたが、cではありません)。それを使用d.splice(0, 3)すると「d」から削除されるはずですが、なぜ「c」からも削除されるのでしょうか??? 何か案は ??私は何かが欠けています、plsは私を導きます。

4

1 に答える 1

3
var d = c;

これは、配列を複製するのではなく、参照しています。

それを複製してd完全に別の配列を作成するには、次を使用します.slice(0)

var d = c.slice(0)
于 2013-11-06T11:28:55.230 に答える