참조

참조형 복사하기

배열

let numbers1 = [1,2,3]
let numbers2 = numbers1

numbers2.push(4)

console.log(numbers1) // [1,2,3,4]
console.log(numbers2) // [1,2,3,4]

상황에 따라사 이 참조형값을 복사하지않고 그대로 복사하고싶을떄도있을 텐데(말그대로 num2만변경하고싶음) 그때 사용하는것이 slice

slice메서드에 parameter에 아무것도 지정하지않으면 원래의 값이 return되는 성질을 이용하면됨 이렇게 하면 배열을 복사하는것처럼보임

let numbers1 = [1,2,3]
let numbers2 = numbers1.slice()

numbers2.push(4)

console.log(numbers1) // [1,2,3]
console.log(numbers2) // [1,2,3,4] 

객체(변수에 주소값이 저장)

let course1 = {
   title : '파이썬 프로그래밍기초',
   language: 'python'
};

1.Object.assign 매서드를 사용하기

let course2 = Object.assign( {}, course1);

course2.title = '알고리즘의 정석'

console.log(course1); // title: '파이썬 프로그래밍기초', language: 'python'
console.log(course2); // title:'알고리즘의 정석' , language: 'python'

2.for in 문 사용하기 이렇게 하면 똑같은 프로퍼티를 갖고있지만 독립적으로 사용할수있음

let course1 = {
   title : '파이썬 프로그래밍기초',
   language: 'python'
};

let course2 = {};

for(let key in course1) {
  course2[key] = course1[key];
}

course2.title = '자료구조'

console.log(course1); // title:  '자료구조' , language: 'python'
console.log(course2); // title:'알고리즘의 정석' , language: 'python'

3.함수이용하기

function cloneObject(object) {
  let temp = {};
  
  for(let key in course1) {
    temp[key] = object[key];
}

  return temp
};

let course1 = {
   title : '파이썬 프로그래밍기초',
   language: 'python'
};


let course2 = cloneObject(course1)


course2.title = '알고리즘의정석'
console.log(course2) // title:'알고리즘의 정석' , language: 'python'

상수에 프로퍼티 추가

const x = {name : 'ss'}
x.birth = 2017

console.log(x) // {name:'ss', birth:2017

할당연산자로 값을변경하면 값을 재할당하는것처럼보이지만 객체의 프로퍼티나 배열의 요소가 변경되는경우는
주소값이 변하는것이아니기때문에 상수의 값이 변할수있음

좋은 웹페이지 즐겨찾기