배열 메소드는 [ ] . 메소드 를 바로 쓸수있으나

객체 메소드는 Const 새 객체 = Object . 메소드 (기존 객체들) 로 Object를 써야한다.

 

Object.assign() 값을 합칠때 // 합치고나면 합침을 당한 앞 객체는 값이 덮어쓰여짐

Object.keys() 값의 key값만 배열로만듬

 

user['email'] // 객체['key이름']

객체데이터도 인덱싱을 할수 있다

 

구조분해

구조 분해 const { key1 , key2 ,key3 ~ } = 메인객체명 user // key이름 변경 key : 변경이름 // key 값 새로 지정 key = 값

 

 

전개연산자는 배열이름을 표현할때 ... 을 같이 .을 3개찍는다

function에서 (매개변수)를 받을때 매개변수에 ...을 붙일시 나머지 매개변수를 모두받는 rest parameter가 된다.

 

데이터불변성

원시데이터(string,number 등)는 바라보는 메모리위치가 값이 같으면 한곳에 위치하고 복사해버려도 두값이 같은곳에 위치한다.

참조형데이터(object,array 등)은 값이 같아도 바라보는 위치가 다르며 값을 복사하면 위치가 같아지고 같은공간에 있는 값중 하나만 바꿔도 안에 모든값이 같이 바뀐다.

 

객체데이터의 서로간 영향없이 새 메모리에 복사하는법

1. Object.assign({ }, 복사할객체) 사용

2. { ...복사할객체} 전개방식으로 { } 사용

 

배열이나 객체안에 다른 참조데이터가 없을시

복사시에는 위 방식대로 Object.assign 이나 ... 으로 { }를 사용해서 얉은복사를 할수있으나

배열이나 객체안에 또 다른 참조데이터가 있을시. 아래처럼 깊은 복사를 하여야한다.

 

깊은복사 :  loadsh의 _.clonedeep(객체) : 모든추가되는 요소들도 다 서로 영향없이 따로 새 메모리에 복사됨.

import _ from 'lodash'로 _.cloneDeep 의 깊은복사를 사용

+ Recent posts