Created
December 11, 2017 08:36
-
-
Save erukiti/6068934c4f0f4265b371385197a904d0 to your computer and use it in GitHub Desktop.
clone問題
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const old = { | |
hoge: 0, | |
fuga: { | |
piyo: 0 | |
} | |
} | |
const new1 = old | |
new1.hoge = 1 | |
new1.fuga.piyo = 1 | |
console.log(old === new1, old.hoge) // --> true, 1 | |
console.log(old.fuga === new1.fuga, old.fuga.piyo) // --> true, 1 | |
const new2 = [old][0] | |
new2.hoge = 2 | |
new2.fuga.piyo = 2 | |
console.log(old === new2, old.hoge) // --> true, 2 | |
console.log(old.fuga === new2.fuga, old.fuga.piyo) // --> true, 2 | |
const new3 = [old].slice()[0] | |
new3.hoge = 3 | |
new3.fuga.piyo = 3 | |
console.log(old === new3, old.hoge) // --> true, 3 | |
console.log(old.fuga === new3.fuga, old.fuga.piyo) // --> true, 3 | |
const new4 = { ...old } | |
new4.hoge = 4 | |
new4.fuga.piyo = 4 | |
console.log(old === new4, old.hoge) // --> false, 3 | |
console.log(old.fuga === new4.fuga, old.fuga.piyo) // --> true, 4 | |
const new5 = Object.assign({}, old) | |
new5.hoge = 5 | |
new5.fuga.piyo = 5 | |
console.log(old === new5, old.hoge) // --> false, 3 | |
console.log(old.fuga === new5.fuga, old.fuga.piyo) // --> true, 5 | |
const new6 = JSON.parse(JSON.stringify(old)) | |
new6.hoge = 5 | |
new6.fuga.piyo = 5 | |
console.log(old === new6, old.hoge) // --> false, 3 | |
console.log(old.fuga === new6.fuga, old.fuga.piyo) // --> false, 5 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment