Mam problem z głęboką kopią obiektu javascript (array). Czytałem wiele dobrych sposobów, aby sobie z tym poradzić. Wiem także, że jQuery ma API $ .extend dla tego problemu. Ale moje pytanie brzmi: czy mogę po prostu użyć JSON stringify i parsować metodę, aby rozwiązać ten problem?Głębokie kopiowanie w javascript przy użyciu JSON
Oto mój kod:
function deepCopy(oldValue) {
var newValue
strValue = JSON.stringify(oldValue)
return newValue = JSON.parse(strValue)
}
var a = {
b: 'b',
c: [1,2,4],
d: null
}
copy = deepCopy(a)
console.log(a === copy) // false
console.log(a.c === copy.c) // false
PS: Znam, że jeśli nie wszystkie obiekty są serializacji, ale sytuacja tylko wiem, że kiedy obiekt zawiera właściwość, która jest funkcją. Każda inna sytuacja?
Przebacz mój biedny angielski, i miło, jeśli możesz to wskazać.
Nie wszystkie obiekty można szeregować jako JSON. Nawet te, które są, wydaje się nieskuteczne, aby przekształcić je w ciąg, a następnie przeanalizować ciąg. Ale powinno działać dobrze. Jedynym problemem są stare wersje IE, w których potrzebujesz polyfill. –
sprawdź tutaj http://msdn.microsoft.com/en-us/library/ie/cc836466(v=vs.94).aspx – anand4tech
Dzięki! Wiem tylko, że obiekt nie podlega serializacji, jeśli ten obiekt zawiera właściwość, która jest funkcją. Ale czy w innej sytuacji obiekt nie nadaje się do serializacji? – user2666750