У меня проблема с javascript объектом (массивом) глубокой копии. Я прочитал много хорошего способа справиться с этим. И я также знаю, что jQuery имеет $ .extend API для этой проблемы. Но мой вопрос: могу ли я просто использовать метод JSON stringify и parse для решения этой проблемы?javascript глубокая копия с использованием JSON
Вот мой код:
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: Я знал, что если не все объекты не сериализуемы, но единственная ситуация, я знаю, что, когда объект содержит свойство, которое функция. Любая другая ситуация?
Простите мой плохой английский, и это приятно, если вы можете указать на это.
Не все объекты сериализуются как JSON. Даже те, которые, как представляется, неэффективны, превращают их в строку и затем анализируют строку. Но он должен работать нормально. Единственная проблема - это старые версии IE, где вам нужна полифония. –
проверьте здесь http://msdn.microsoft.com/en-us/library/ie/cc836466(v=vs.94).aspx – anand4tech
Спасибо! Я знаю только, что объект не сериализуем, если этот объект содержит свойство, которое является функцией. Но если в другой ситуации, что объект не сериализуем? – user2666750