javascriptオブジェクト(配列)ディープコピーに問題があります。私はそれに対処するために多くの良い方法をお読みください。そして、私はまた、jQueryがこの問題に対する$ .extend APIを持っていることも知っています。しかし、私の質問です:JSON stringifyと解析メソッドを使用してこの問題を解決できますか?ここでJSONを使用したjavascriptディープコピー
は私のコードです:
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としてシリアライズ可能なわけではありません。それらの文字列を文字列に変換して文字列を解析することは非効率的です。しかし、うまくいくはずです。 polyfillが必要な古いバージョンのIEのみが問題です。 –
ここをクリックhttp://msdn.microsoft.com/en-us/library/ie/cc836466(v=vs.94).aspx – anand4tech
ありがとう!このオブジェクトに関数であるプロパティが含まれていると、オブジェクトがシリアライズ可能でないことがわかります。しかし、オブジェクトがシリアライズ可能でない他の状況があれば? – user2666750