[javascript] javascript의 객체 생성 방법




javascript의 객체 개념은 C++이나 자바와 같은 언어와의 객체 개념과 약간 다르다.


자바는 클래스를 정의하고, 클래스의 인스턴스를 생성하는 과정에서 객체가 만들어진다.
이에 비해, javascript는 클래스라는 개념이 없고,
객체 리터럴이나 생성자 함수 등 별도의 생성방식이 존재한다.


javascript의 객체 생성방법에는 크게 3가지가 있다.


하나. 기본제공 Object() 객체 생성자 함수를 이용하는 방법
둘. 객체 리터럴을 이용하는 방법
셋. 함수를 이용한 객체를 생성하는 방법


이렇게만 본다면 와닿지 않을 수 있다.
나도 와닿지 않았었기에 코드로 보자면 다음과 같다.

Object() 생성자 함수


var senbro = new Object();

senbro.status = 'good';
senbro.result = 'happy';

console.log(typeof senbro);		// object
console.log(senbro);			// { status : 'good', result : 'happy'}

객체 리터럴


var senbro = {
	status : 'good',
    result : 'happy'
   };
   
console.log(typeof senbro);		// object
console.log(senbro);			// { status : 'good', result : 'happy'}

함수를 이용한 객체 생성


var senbro = new Function('x', 'y', 'return x + y');
console.log(senbro(3,4));		// 7

senbro.status = 'good';
senbro.result = 'happy';

console.log(typeof senbro);		// function
console.log(senbro);			// { status : 'good', result : 'happy'}




'함수를 이용한 객체 생성'을 보면서 약간 의아한 생각이 들 수 있다.

어 이건 typeof 메소드의 결과값이 function인데?



당연히 그럴수 있다. 나도 그랬다.

하지만 찾아보니 javascript에서는 함수도 객체이다.




함수 기본기능뿐만 아니라,

위의 status, result처럼 프로퍼티도 가질 수 있다는것이 이에대한 증거이다.

이는 일반객체와 같은 특성이다.




나는 java가 익숙한 사람인지라 뭔가 알수없는 내면의 반감(?)이 있지만(나만그런가)

차차 배우면서 javascript에도 익숙해질거라 생각한다.







틀린부분이나 잘못된 부분은 언제나 지적해주세요

항상 환영입니다.


참조 : 인사이드 자바스크립트 - 송형주, 고현준

좋은 웹페이지 즐겨찾기