2012-05-21 17 views
8

Tüm nesneyi bir dizide değiştirmek istiyorum. Ben çıkış NAME3 beklenir kod parçası olarak Nesne dizisindeki bir öğenin değiştirilmesi

http://jsfiddle.net/CWSbJ/

var array = [ {name: "name1" }, { name: "name2" } ]; 
var element = array[0]; 
element = {name: "name3"}; 
alert(array[0].name); 

, neden böyle bir dizideki tüm bir nesneyi yerini alamaz? Ve bunu yapmanın iyi yolu nedir?

+1

dizinin onun bir kopyasını, değil' dizi [0] ' . –

cevap

16

doğru yolu

var element = array[0]; 

ile ilk elemanı bir referenc * alırken, çünkü

array[0] = {name: "name3"}; 

Mevcut kod beklendiği gibi çalışmaz ve o zaman değerini değiştirerek vardır Bu yerel değişkenin başka bir nesne ile. Bu orijinal diziyi değiştirilmemiş bırakır.

+0

Biraz yanlış açıklama. 'element' bir kopya değil,' array [0] 'içinde saklanan nesneye bir * referans *. 'Element.name' değiştirilerek dizi [0] .name' etkilenir. – Deestan

+0

@Deestan: Teşekkürler, düzeltildi. Ne düşündüğümü gerçekten bilmiyorum. – Jon

+0

Sanırım dizi [i] .name = "atamak için değer", [i] = {name: 'bir şey'} dizisini izlerseniz, her nesne özelliği yalnızca isimle atanır. vaka. – Sudarshan

2

bu deneyin:

var array = [ {name: "name1" }, { name: "name2" } ]; 
array[0] = {name: "name3"}; 
alert(array[0].name); 

element

fiili dizi değil - Sadece element` `bir başka değer atama

İlgili konular