μλ°μ€ν¬λ¦½νΈμμ μ 곡νλ λ°μ΄ν°νμ μ μμνμ κ³Ό κ°μ²΄ νμ μ΄ μλ€. λ νμ μ μ°¨μ΄μ μ ν¬κ² λ€μ μΈ κ°μ§κ° μλ€.
μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°μ΄λ€.
λ³μλ μΈμ λ μ§ μ¬ν λΉμ ν΅ν΄ λ³μ κ°μ λ³κ²½(μλ°ν λ§νμλ©΄ κ΅μ²΄)ν μ μλ€. κ·Έλ κΈ° λλ¬Έμ λ³μλΌκ³ λΆλ₯Έλ€. μμλ μ¬ν λΉμ΄ κΈμ§λ λ³μμΌ λΏμ΄λ€.
μμ κ°μ ν λΉν λ³μμ μλ‘μ΄ μμ κ°μ μ¬ν λΉνλ©΄ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λμ΄ μλ μ¬ν λΉ μ΄μ μ μμ κ°μ λ³κ²½νλ κ²μ΄ μλλΌ μλ‘μ΄ λ©λͺ¨λ¦¬ 곡κ°μ ν보νκ³ μ¬ν λΉν μμ κ°μ μ μ₯ν ν, λ³μλ μλ‘κ² μ¬ν λΉν μμ κ°μ κ°λ¦¬ν¨λ€. μ΄λ¬ν νΉμ±μΒ λΆλ³μ±μ΄λΌκ³ νλ€. λΆλ³μ±μ κ°λ μμ κ°μ ν λΉν λ³μλΒ μ¬ν λΉ μ΄μΈμ λ³μ κ°μ λ³κ²½ν μ μλ λ°©λ²μ΄ μλ€
μλ°μ€ν¬λ¦¬λΈλ μμ νμ μ λ¬Έμμ΄μ μ 곡νλ€. λ¬Έμμ΄μ μ μ¬ λ°°μ΄ κ°μ²΄λ‘μ λ°°μ΄κ³Ό μ μ¬νκ² κ° λ¬Έμμ μ κ·Όν μ μμΌλ λ³κ²½ λΆκ°λ₯ν κ°μ΄κΈ° λλ¬Έμ μΌλΆ λ¬Έμλ₯Ό λ³κ²½ν΄λ λ°μλμ§ μλλ€. μμ νμ μΈ λ¬Έμμ΄μ μ½κΈ° μ μ©μ΄κΈ° λλ¬Έμ΄λ€.
var str = 'string';
// λ¬Έμμ΄μ μ μ¬ λ°°μ΄μ΄λ―λ‘ λ°°μ΄κ³Ό μ μ¬νκ² μΈλ±μ€λ₯Ό μ¬μ©ν΄ κ° λ¬Έμμ μ κ·Όν μ μλ€.
// νμ§λ§ λ¬Έμμ΄μ μμκ°μ΄λ―λ‘ λ³κ²½ν μ μλ€. μ΄λ μλ¬κ° λ°μνμ§ μλλ€.
str[0] = 'S';
console.log(str); // string
λ³μμ μμ κ°μ κ°λ λ³μλ₯Ό ν λΉνλ©΄ ν λΉλ°λ λ³μμλ ν λΉλλ λ³μμ μμ κ°μ΄ 볡μ¬λμ΄ μ λ¬νλ€. μ΄λ₯Ό κ°μ μν μ λ¬μ΄λΌ νλ€. μ격νκ² νννλ©΄ κ°μ΄ μ λ¬λλ κ²μ΄ μλλΌ λ©λͺ¨λ¦¬ μ£Όμκ° μ λ¬λκΈ° λλ¬Έμ΄λ€. μ΄λ λ³μμ κ°μ μλ³μλ κ°μ΄ μλλΌ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κΈ°μ΅νκ³ μκΈ° λλ¬Έμ΄λ€.
μ΄μ²λΌ βκ°μ μν μ λ¬βλ μ¬μ€μ κ°μ μ λ¬νλ κ²μ΄ μλλΌ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ λ¬νλ€. λ¨ μ λ¬λ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ 곡κ°μ μ κ·Όνλ©΄ κ°μ μ°Έμ‘°ν μ μλ€.
λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ λ¬νκ² λλ©΄ λ λ³μμ μμ κ°μ μλ‘ λ€λ₯Έ λ©λͺ¨λ¦¬ 곡κ°μ μ μ₯λ λ³κ°μ κ°μ΄ λμ΄ μ΄λ νμͺ½μμ μ¬ν λΉμ ν΅ν΄ κ°μ λ³κ²½νλλΌλ μλ‘ κ°μν μ μλ€.
κ°μ²΄λ μμ κ°κ³Ό κ°μ΄ ν보ν΄μΌν λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ₯Ό μ¬μ μ μ ν΄ λ μ μκ³ λ³΅ν©μ μΈ μλ£κ΅¬μ‘°μ΄λ€. λ°λΌμ κ°μ²΄λ μμ κ°κ³Όλ λ€λ₯Έ λ°©μμΌλ‘ λμνλλ‘ μ€κ³λμ΄ μλ€.
μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°μ΄λ―λ‘ μμ κ°μ κ°λ λ³μμ κ°μ λ³κ²½νλ €λ©΄ μ¬ν λΉ μΈμλ λ°©λ²μ΄ μλ€. νμ§λ§ κ°μ²΄λ λ³κ²½ κ°λ₯ν κ°μ΄λ€. λ°λΌμ κ°μ²΄λ₯Ό ν λΉν λ³μλ μ¬ν λΉ μμ΄ κ°μ²΄λ₯Ό μ§μ λ³κ²½ν μ μλ€. μ¦, μ¬ν λΉ μμ΄ νλ‘νΌν°λ₯Ό λμ μΌλ‘ μΆκ°ν μλ μκ³ νλ‘νΌν° κ°μ κ°±μ ν μλ μμΌλ©° νλ‘νΌν° μ체λ₯Ό μμ ν μλμλ€.
κ°μ²΄λ λ©λͺ¨λ¦¬λ₯Ό 볡μ¬ν΄μ μμ±νκ² λλ©΄ λ©λͺ¨λ¦¬μ ν¨μ¨μ΄ λ§μ΄ λ¨μ΄μ§κΈ° λλ¬Έμ κ°μ²΄λ λ³κ²½ κ°λ₯ν κ°μΌλ‘ μ€κ³λμ΄ μλ€. μ΄λ¬ν ꡬ쑰μλ λΆμμ©μ΄ μ‘΄μ¬νλλ° κ·Έκ²μ μμ κ°κ³Όλ λ€λ₯΄κ² μ¬λ¬ κ°μ μλ³μκ° νλμ κ°μ²΄λ₯Ό 곡μ ν μ μλ€λ κ²μ΄λ€.
π§ μμ볡μ¬μ κΉμ볡μ¬
const o = { x: { y: 1 } }; // μμ λ³΅μ¬ const c1 = { ...o }; // 35μ₯ "μ€νλ λ λ¬Έλ²" μ°Έκ³ console.log(c1 === o); // false console.log(c1.x === o.x); // true // lodashμ cloneDeepμ μ¬μ©ν κΉμ λ³΅μ¬ // "npm install lodash"λ‘ lodashλ₯Ό μ€μΉν ν, Node.js νκ²½μμ μ€ν const _ = require('lodash'); // κΉμ λ³΅μ¬ const c2 = _.cloneDeep(o); console.log(c2 === o); // false console.log(c2.x === o.x); // false const v = 1; // "κΉμ 볡μ¬"λΌκ³ λΆλ₯΄κΈ°λ νλ€. const c1 = v; console.log(c1 === v); // true const o = { x: 1 }; // "μμ 볡μ¬"λΌκ³ λΆλ₯΄κΈ°λ νλ€. const c2 = o; console.log(c2 === o); // true
var person = {
name: 'Lee'
};
// μ°Έμ‘°κ°μ 볡μ¬(μμ 볡μ¬)
var copy = person;
μμ μ½λμμ personκ³Ό copy λͺ¨λ λμΌν κ°μ²΄λ₯Ό κ°λ¦¬ν€λλ° μ΄λ λ κ°μ μλ³μκ° νλμ κ°μ²΄λ₯Ό 곡μ νλ€λκ²μ μλ―Ένλ€.