본문 바로가기

UI개발

자바스크립트 참조타입

기본 타입(숫자, 문자, 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