기본 타입(숫자, 문자, true/false, undefined, null)을 제외한 모든 값은 객체이다.
자바스크립트에서 객체는 단순히
이름(key) : 값(value) 형태의 프로퍼티를 저장하는 컨테이너로,
하나의 값만 가지는 기본 타입과 달리 여러개의 값을 포함할 수 있다.
다른 객체를 가리킬 수도 있고, 함수로도 포함할 수 있다.
객체 생성 방법
1. Object() 생성자
자바스크립트는 내장 Object() 생성자 함수를 제공한다.
var hh = new Object();
hh.name = ‘hhh’;
hh.age = 28;
console.log(typeof hh); // object
console.log(hh); // Object { name : ‘hhh’, age : 28 }
2. 객체 리터럴 방식
중괄호({})를 이용해서 객체를 생성.
{}안에 아무것도 적지 않은 경우 빈 객체가 생성되며, 중괄호 안에 이름: 값 형태로 표기하면 해당 프로퍼티가 추가된 객체를 생성할수 있다.
var hh = {
name : ‘hhh’,
age : 28
};
console.log(typeof hh); // object
console.log(hh); // Object { name : ‘hhh’, age : 28 }
3. 생성자 함수
함수를 통해서도 객체를 생성할 수 있으며 이러한 함수를 생성자 함수라고 부른다.
function 함수명(매개변수1, 매개변수2){
this.속성1 = 매개변수1;
this.속성2 = 매개변수2;
this.메서드 = function(){실행문};
}
var 객체명 = new 함수명(값1, 값2)
프로퍼티 읽기/갱신/생성/삭제
대괄호([]), 마침표(.)로 접근한다.
var hh = {
name : ‘hhh’,
age : 28
};
console.log(hh.name, hh[‘age’]); // hhh 28
hh.name = “H hh;
hh.addr = “Bucheon”;
console.log(hh.name, hh[‘addr’]); // H hh Bucheon
대괄호 표기법
보통은 마침표(.) 표기법을 이용하고, 이를 사용할 수 없는 경우 대괄호 표기법을 이용한다.
hh[“full-name”] = “hhh”;
console.log(hh.full-name) // NaN
NaN (Not a Number)
수치 연산을 해서 정상적인 값을 얻지 못할 때 출력되는 값.
var num = 10, str = “문자”;
var num2 = num - str;
console.log(num2); // NaN
참조 타입 특성
동일한 객체를 참조하는 두 변수
var a = { num : 40}
var b = a;
console.log(a.num, b.num); // 40, 40
b.num = 50;
console.log(a.num, b.num); // 50, 50
num : 40 <- a <- b
기본 타입과 참조 타입의 비교 연산
var a = 100;
var b = 100;
var objA = { value : 100 };
var objB = { value : 100 };
var objC = objB;
console.log(a == b); // true
console.log(objA == objB); // false
console.log(objB == objC); // true
value : 100 <- objA
value : 100 <- objB <- objC
참조에 의한 함수 호출 방식
var a = 100;
var objA = { value : 100 };
function change(num, obj){
num = 200;
obj.value = 200;
console.log(num, obj); // 200, {value : 200}
}
change(a, objA);
console.log(a, objA); // 100, {value : 200}
a : 100 -> num
value : 100 <- objA <- obj
'UI개발' 카테고리의 다른 글
[ES6] 화살표 함수에 없는 것 (0) | 2019.09.02 |
---|---|
UX/UI 기획을 위한 제반 이론 (0) | 2018.11.22 |
자바스크립트 배열 (0) | 2017.07.09 |
자바스크립트 연산자 (0) | 2017.06.25 |
콘텍스트 (0) | 2016.12.12 |