객체지향 문법을 배우기 전에 반드시 이해해야 할 Primitive와 Reference 데이터 타입에 대해 알아봅니다.
JavaScript에서는 자료형을 크게 두 가지로 구분합니다.
var 이름1 = '김';
var 이름2 = 이름1; // 이름1의 값 '김'이 복사됨
이름1 = '박';
console.log(이름1); // 출력: '박'
console.log(이름2); // 출력: '김'
var 이름1 = { name: '김' };
var 이름2 = 이름1; // 이름1의 참조(화살표)가 복사됨
이름1.name = '박';
console.log(이름1); // 출력: { name: '박' }
console.log(이름2); // 출력: { name: '박' }
var 이름1 = { name: '김' };
var 이름2 = { name: '박' };
var 이름1 = { name: '김' };
var 이름2 = { name: '김' };
console.log(이름1 == 이름2); // 출력: false
== 비교 시 false가 나옵니다.JavaScript에서 객체를 함수에 전달할 때는 참조(화살표)가 복사되어 전달됩니다.
var 이름1 = { name: '김' };
function 변경(obj) {
obj = { name: 'park' };
}
변경(이름1);
console.log(이름1); // 출력: { name: '김' }
변경의 파라미터 obj는 이름1의 참조를 복사받습니다.obj에 새로운 객체를 재할당해도, 원본 변수 이름1은 여전히 기존의 참조를 유지합니다.var 이름1 = { name: '김' };
function 변경(obj) {
obj.name = 'park';
}
변경(이름1);
console.log(이름1); // 출력: { name: 'park' }
obj.name을 직접 수정하면, obj가 가리키는 동일한 객체의 내용이 변경되므로, 원본인 이름1에도 반영됩니다.