javascript primitive, Reference data type

jangdu·2023년 3월 26일
0

javascript

목록 보기
8/16

js의 자료형은 Primitive, Reference 크게 두개로 분류한다.

Primitive data type

자료 자체가 변수에 저장되는 자료들

문자, 숫자 자료형들이 대표적인 친구들이다.

var name = 'john';
var age = 20;

이렇게 문자나 숫자 자료형은 변수에 직접 저장된다.

Reference data type

얘가 좀 이상한데
Array, Object자료형은 이친구에 속한다.
reference data type은 자료를 변수에 직접 저장하는게 아니고
자료는 따로 있고 거기에 있다는 화살표(레퍼런스)를 저장한다.

var person = { name : 'kim' };

이런거 자료에 저장하면
name: 'kim'이 person에 저장되는게 아니고
저깄다는 화살표가 저장된다.

컴퓨터 메모리상의 어딘가에 { name : 'kim' }이 저장되고
저기에 저장됐다고 알려주는 뭔가가 저장된다.

예를 들면 더 쉽게 파악할 수있다.

var name1 = { name : '김' };
var name2 = name1;
name1.name = '박';
console.log(name1);	// 박
console.log(name2);	// 박

위 코드에서는 name2에 name1을 넣은 후,
name1의 값만 바꿨다.
근데 이친구를 출력해보면?
둘다 바뀐 값이 나온다.

그렇게되는 이유는 name1은 오브젝트라서
name:'김'이 저장되는게 아니고 저게 어딨는거라는 화살표가 저장되기 때문이다.
그친구를 복사해서 name2에 넣어도
여전히 화살표를 복사하기 때문에
같은 메모리를 사용하고있는게 된다.

그래서 object를 복사 할 때는 그냥 복사하지말고 constructor같은거로 복사하장

profile
대충적음 전부 나만 볼래

0개의 댓글