Web 8 : nodejs(3)

haeIT·2024년 8월 12일

Web

목록 보기
8/14
post-thumbnail

2024-08-12 MON

1교시 : 전달사항
2,3교시 : js 마무리, 선딩쓰를 위한 녹화 시작~! (언니 꼭 봐요)
4교시 : sql 빠르게 정리

🤨


실습

ch_19.js

1. 얕은 복사

  • 객체 타입 : object, array, function
  • 변수에 저장할 경우, 값이 복사되는것이 아니라, 값이 저장되어 있는 주소값(참조값)이 복사된다.(얕은 복사)

2. 깊은 복사

  • 원시 타입 : number, string, boolean, null, undefined
  • 변수에 저장할 경우, 값 자체로 저장되고 복사된다.(깊은 복사)
let p1 = 1;
let p2 = p1; // 깊은 복사
// p1값 바꿔도 p2에 영향이 없음

p2 = 10;

console.log(p1, p2);

let o1 = {name : '해닝'}; 
let o2 = o1; // 얕은 복사
// o2는 o1이 바뀜에 따라 언제든지 바뀔 수 있음(=얕은복사)

o2.name = '해니해니짱';
console.log(o1, o2);

// 얕은 비교, 깊은 비교
let o3 = {name : '해닝', age : 27};
let o4 = o3;


copy_type.ipynb - 파이썬 복사

1. 단순복사 ('='를 통한 복사)

# 실제로는 값을 복사하는 것이 아니라 주소값을 복사해서 공유
# 동일한 값을 a와 b가 같이 가리키고 있다.
a = [1,2,3]
b = a
print(b)

b [0] = 100     # 원본을 공유하고 있고, 원본도 함께 수정된다.
print('a: ', a)
print('b: ', b)

👉 output

[1, 2, 3]
a:  [100, 2, 3]
b:  [100, 2, 3]

2. 얕은 복사

  • 복사해서 새로운 객체를 생성, 원래의 값을 저장한다.
  • 동일한 객체를 공유하지 않는다.
  • 최상위 레벨만 새로운 객체로 복사하고, 내부 객체는 여전히 단순 복사로 주소값만 공유
import copy

a = [1,2,[3,4]]
b = copy.copy(a) # a를 복사해서 새로운 b를 만든다.

print('a: ', a)
print('b: ', b)

b[1] = 100     # b를 수정해도 원본인 a는 수정되지 않는다.

print('a: ', a)
print('b: ', b)

👉 output

a:  [1, 2, [3, 4]]
b:  [1, 2, [3, 4]]
a:  [1, 2, [3, 4]]
b:  [1, 100, [3, 4]]

3. 깊은 복사

  • 최상위 계층과 그 내부의 모든 객체를 완전히 새로운 객체로 복사해서 생성한다.
  • 모든레벨에서 a와 다른 b가 복사되어 생성된다.
a = [1,2,[3,4]]
b = copy.deepcopy(a) # 깊은 복사

print('a: ', a)
print('b: ', b)

b[1] = 100     
b[2][0] = 1000

print('a: ', a)
print('b: ', b)  # 모든레벨에서 a와 다른 b가 복사되어 생성된다.

👉 output

a:  [1, 2, [3, 4]]
b:  [1, 2, [3, 4]]
a:  [1, 2, [3, 4]]
b:  [1, 100, [1000, 4]]

  • js 는 끝!
  • 이제 sql로 넘어갑니다~!

0개의 댓글