Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 세마포어
- 뮤텍스
- 웹 호스팅
- Proxy
- 호스팅이란?
- Proxy Server
- 동기화
- 세마포어란?
- Synchronization
- Dijkstra Algorithm
- 프록시서버
- 서버 호스팅
- 싸피
- 다익스트라
- 플로이드 와샬
- 다익스트라 알고리즘
- 플로이드 워셜
- 클라우드 서버
- 세마포어와 뮤텍스
- 호스팅
- SSAFY
- 프록시
- 세마포어와 뮤텍스의 차이
- 삼성 청년 SW 아카데미
- 싸피 면접 후기
- 뮤텍스란?
- floyd-warshall
- 최단 경로
- 싸피 합격
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
자바스크립트 참조 타입(객체 타입) 본문
- 자바스크립트에서 숫자, 문자열, 불린값, null, undefined 같은 기본 타입을 제외한 모든 값은 객체이다.
- 따라서 배열, 함수, 정규표현식 등도 모두 결국 객체로 표현된다.
- 자바스크립트에서 객체는 단순히 '이름(key) : 값(value)' 형태의 프로퍼티들을 저장하는 컨테이너로서 해시(Hash) 자료구조와 상당히 유사하다.
- 기본 타입은 하나의 값만 가지는데 비해, 참조 타입인 객체는 여러 개의 프로퍼티들을 포함할 수 있다.
- 이러한 객체의 프로퍼티는 기본 타입의 값을 포함하거나, 다른 객체를 가리킬 수 있다.
- 이러한 프로퍼티의 성질에 따라 객체의 프로퍼티는 함수로 포함할 수 있으며, 자바스크립트에서는 이러한 프로퍼티를 메서드라고 부른다.
객체를 생성하는 방법 3가지
Object() 생성 함수 이용
- 자바스크립트에서는 객체를 생성할 때, 내장 Object() 생성자 함수를 제공한다.
- 다음 예제는 Object() 생성자 함수를 이용해서 foo라는 빈 객체를 생성한 후, 몇 가지 프로퍼티들을 추가한 것이다.
var foo = new Object();
foo.name = 'foo';
foo.age = 30;
foo.gender = 'male';
console.log(typeof foo);// object
console.log(foo); // { name: 'foo', age: 30, gender: 'male' }
객체 리터럴 방식 이용
- 리터럴이란 용어의 의미는 표기법이라고 생각하면 된다.
- 객체 리터럴 방식은 간단한 표기법만으로도 객체를 생성할 수 있는 자바스크립트의 강력한 문법이다.
- 객체 리터럴은 중괄호 {} 를 이용해서 객체를 생성한다.
- 중괄호 안에 "프로퍼티 이름" : "프로퍼티 값" 형태로 표기하면 된다.
- 프로퍼티 이름은 문자열이나 숫자가 올 수 있다.
- 프로퍼티 값으로는 자바스크립트의 값을 타내는 어떤 표현식도 올 수 있으며, 이 값이 함수일 경우 이러한 프로퍼티를 메서드라고 부른다.
var foo = {
name : 'foo',
age : 30,
gender : 'male'
};
console.log(typeof foo);// object
console.log(foo); // { name: 'foo', age: 30, gender: 'male' }
생성자 함수 이용
- 자바스크립트의 경우는 함수를 통해서도 객체를 생성할 수 있다.
- 이렇게 객체를 생성하는 함수를 생성자 함수라고 부르는데 자세한 내용은 함수와 프로토타입 체이닝에서 확인!
그렇다면 생성한 객체의 프로퍼티를 어떻게 접근할까?
- 대괄호([ ]) 표기법
- 마침표(.) 표기법
자바스크립트 참조 타입의 특성
- 자바스크립트에서는 기본 타입인 숫자, 문자열, 불린값, 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 변수는 객체 자체를 저장하고 있는 것이 아니라 생성된 객체를 가리키는 참조값을 저장하고 있다는 것을 볼 수 있다.
참조에 의한 함수 호출 방식
- 객체의 모든 연산이 실제 갓이 아닌 참조값으로 처리된다.
- 기본 타입의 경우 값에 의한 호출 ( Call by Value 방식 ) 즉, 매개변수로 복사된 값이 전달, 때문에 함수 내부에서 매개변수를 이용해 값을 변경해도, 실제로 호출된 변수의 값이 변경되지 않는다.
- 반면 참조 타입은 참조에 의한 호출 ( Call by Reference 방식 ), 복사되지 않고 인자로 넘긴 객체의 참조값이 그대로 함수 내부로 전달된다. 때문에 함수 내부에서 참조값을 이용해서 인자로 넘긴 실제 객체의 값을 변경할 수 있다.
var a = 100;
var objA = { value : 100};
function changeArg(num, obj){
num = 200;
obj.value = 200;
console.log(num);
console.log(obj);
}
changeArg(a, objA);
console.log(a);
console.log(objA);
끝~
출처
'공부 > JavaScript && jquery' 카테고리의 다른 글
자바스크립트 함수 호이스팅이란? (0) | 2021.04.10 |
---|---|
자바스크립트 함수 정의 (0) | 2021.04.10 |
자바스크립트 프로토 타입 (0) | 2021.04.09 |
자바스크립트 데이터 타입과 연산자 (0) | 2021.04.08 |
자바스크립트의 핵심 개념 (0) | 2021.04.08 |
Comments