자바스크립트에서는 기본 타입인
숫자
,문자열
,불린값
,null
,undefined
5가지를 제외한 모든 값은 객체다. 배열이나 함수도 또한 객체이다. 이러한 객체를 참조 타입이라고 부른다.
객체의 연산은 모두 실제 값이 아닌 참조 값으로 처리되기 때문에 '참조 타입'이다.
var objA = {
val: 40;
};
var objB= objA;
console.log(objA.val); // 40
console.log(objB.val); // 40
objB.val = 50;
console.log(objA.val); // 50
console.log(objB.val); // 50
objA와 objB 모두 동일한 객체를 가리키는 '참조값'을 가지고 있으므로, objB.val와 objA.val은 같게 된다.
동등 연산자(==)를 사용하여 두 객체를 비교할 때도 객체의 프로퍼티 값이 아닌 참조값을 비교한다는 것에 주의해야 한다.
var objA = { value: 100 }
var objB = { value: 100 }
var objC = objB;
console.log(objA == objB); // false
console.log(objB == objC); // true
objA와 objB는 같은 객체를 참조하고 있지 않으므로 프로퍼티 값이 같더라도 false가 나온다.
objB와 objC는 같은 객체를 참조하고 있으므로 true가 나온다.