참조는 객체의 실제 위치를 가리키는 포인터.
자바스크립트에서 실제 객체 그 자체는 절대로 참조가 될 수 없다.
문자열은 항상 문자열이고
배열은 항상 배열이다.
그렇지만 서로 다른 변수들이 동일한 객체를 가리킬 수 있다.
자바스크립트는 이렇게 참조들로 구성된 구조에 기반하고 있다.
동일한 객체를 가리키는 여러 변수들에 대한 예
// obj를 빈 객체로 설정
var obj = new Object();
// objRef는 앞의 빈 객체를 가리킨다.
var objRef = obj;
// 앞에서 생성했던 객체의 프로퍼티를 수정한다.
obj.oneProperty = true;
// 두 변수 모두 동일한 객체를 가리키고 있기 때문에 수정 사항이 두 변수에 모두 나타남.
alert( obj.oneProperty == objRef.oneProperty );
배열 객체는 push() 메서드로 새로운 아이템을 추가할 수 있다.
스스로를 수정할 수 있는 객체에 대한 예
// 아이템 배열을 생성한다.
var items = new Array( "one", "two", "three" );
// 아이템 배열에 대한 참조를 하나 생성
var itemsRef = items;
// 원본 배열에 아이템을 하나 추가.
items.push( "four" );
// 두 변수가 동일한 배열 객체를 가리키기 때문에 배열의 크기가 같아야 한다.
alert( items.length == itemsRef.length );
참조는 최종적으로 참조되는 객체를 가리키며, 참조 자체를 가리키지 않는다.
원래 객체는 그대로 두고 한 객체의 참조를 변경
// items가 문자열 배열을 가리키게 한다.
var items = new Array( "one", "two", "three" );
// itemsRef가 items 참조를 가리키게 한다.
var itmesRef = items;
// items가 새로운 객체를 가리키게 한다.
var items = new Array("new", "array");
// items와 itemsRef는 이제 서로 다른 객체를 가리킨다.
// items는 new Array("new", "array")를 가리키고
// itemsRef는 new Array("one", "two", "three")를 가리킨다.
내용을 수정할 수 없는 새로운 객체를 만드는 객체 수정에 대한 예
// item이 새로운 문자열 객체를 가리키게 한다.
var item = "test";
// itemRef는 이제 동일한 문자열 객체를 가리킨다.
var itemRef = item;
// 문자열 객체에 새로운 텍스트를 이어붙인다.
// 이렇게 하면 원본 객체를 수정하지 않고 새로운 객체를 만든다.
item += "ing";
// 완전히 새로운 객체를 생성했기 때문에 item과 itemRef는 서로 다르다.
'UI개발' 카테고리의 다른 글
콘텍스트 (0) | 2016.12.12 |
---|---|
함수 오버로딩과 타입 검사 (0) | 2016.12.12 |
자바스크립트 Array 객체 메서드 (0) | 2016.11.09 |
자바스크립트 오름차순, 내림차순 정렬 (0) | 2016.10.25 |
자바스크립트 최대값, 최소값 찾기 (0) | 2016.10.25 |