2016-03-23 15 views
-2

Yani ben bir javascript nesne iki yöntem olan game çağrıda ikinci birinci değişikliklerin değerini değiştirerek aynı nesnenin başka bir yöntemle atanmış yöntem başka: bir süre sonraJAVASCRIPT bir

game.TxtRevealedBackup = game.TxtRevealed; 

i (i bazı değerleri kesmek için slice işlevini kullanın) game.TxtRevealed değiştirin. Ve şimdi niyetim olmayan bir şey olur: otomatik olarak game.TxtRevealedBackup, game.TxtRevealed'un yeni değerine de değişir.

game.TxtRevealedBackup'un game.TxtRevealed'un atanma anındakiyle aynı olacağını tahmin ediyorum. game.TxtRevealedBackupgame.TxtRevealed tarafından temsil edilen değere sürekli olarak atandığında, işin yapıldığı andaki değeri değil.

Neden oluyor ve nasıl çalışmasını beklerim? Kalreg.

+2

Evet, nesneler böyle çalışır. BTW, 'dilim 'diziyi değiştirmez; Muhtemelen "ekleme" anlamına gelir. – Oriol

+1

Nesne yönelimli programlama dillerinin çoğu bu şekilde çalışır. Nesneler referans olarak temsil edilir. * "nasıl çalışacağını beklerim" * Nesneyi klonlayabilirsiniz. –

+0

Hedefe ulaşmak için ne yapmalıyım? – Kalreg

cevap

0

Nesneler başvurulan şekilde çalışır. Nesneleri klonlamak istiyorsanız, bu answer'a bakın.

+0

Bundan çok daha basit bir çözüm olmasını beklerim, değişken veya sth eklemek ve eklemek gibi bir şey. – Kalreg

+0

Hayır. Ancak jQuery kullanıyorsanız, var cloned = $ .extend ({}, original); gibi bir şey kullanabilirsiniz. – reieRMeister