Bunun eski bir soru olduğunu anlıyorum, ancak cevaplara biraz daha eklemek istedim, çünkü birisi bu sayfadan başka bir şekilde uzaklaşabiliyor, yanlışlıkla karşılaştırma ve klonlama için JSON.stringify
'u kullanmanın sorun olmadığı sürece sorunsuzca çalışacağını düşünüyorum nesneleri karşılaştırmak/klonlamak için kullanılır. Üyeler sıralanmamıştır. (Kabul edilen yanıtın adil olması için, 'un'u düşünmemeleri gerektiğini düşünürler; "Eğer üyeler aynı sırayla girilirse, bu yaklaşım çoğu zaman çalışacaktır.")
Kod muhtemelen en iyi potansiyel hıçkırık göstermektedir:
JSON.stringify(NaN) === JSON.stringify(null)
// => true
JSON.stringify(Infinity) === JSON.stringify(null)
// => true
// or, to put it all together:
JSON.stringify({ val1: (1/0), val2: parseInt("hi there"), val3: NaN }) === JSON.stringify({ val1: NaN, val2: null, val3: null })
// => true
// and here's the same example with "cloning" rather than comparison:
JSON.parse(JSON.stringify({ val1: (1/0), val2: parseInt("hi there"), val3: NaN }))
// => Object {val1: null, val2: null, val3: null}
Bunlar sipariş (diğerleri söylediler, o olabilen,) bir sorun olmasa bile soruna yol açabilir tuhaflıklar vardır. Muhtemelen çoğu zaman bu tuhaflıkların çirkin kafalarını geri getirmesi pek muhtemel değildir, fakat bunların farkına varmak iyi bir şeydir, çünkü bazı hatalar bulmak zor olabilir.
Sadece JSON serileştirilebilir nesneleri kullanıyorum. – MaiaVictor
FWIW makalesi, 'JSON nesnesi' demek ve 'JSON nesnesi' diye bir şey olmadığını belirtmekle ilgili sıkıdır. Http://benalman.com/news/2010/03/theres-no-such-thing-as-a- json/ – DanC
@BenjaminGruenbaum tam olarak yinelenmez, ancak bu adamlar zaten eski JSON lib'i kullanıyor. – MaiaVictor