본문 바로가기

JavaScript/Basic-Javascript

자바스크립트 정리하며 배우기[06] - 객체 개념 및 프로퍼티 생성, 리터럴 형식, 생성자 함수

안녕하세요. Tay 입니다.

이전 글을 통해서 객체, 배열, 함수 에 대해 간략하게 설명을 봤습니다.

 

객체

  • Key : Value 형태의 프로퍼티들을 저장하는 컨테이너
  • 하나의 값만 가지는 기본 타입과 달리, 객체는 여러개의 프로퍼티들을 포함 할 수 있다

 

객체 생성 방법 3가지

1. 기본 제공 Object( ) 객체 생성자 함수를 이용하는 방법

  1) index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script src="objects.js"></script>
</body>
</html>

  2) objects.js

objects.js

// 1. Object( )
let kim = new Object();

kim.kind = 'Object';
kim.name = 'geuntae';
kim.age = 24;
kim.gender = 'male';

console.log(typeof kim);
console.log(kim);

나는 kim 이라는 객체를 생성하여 위와 같이 프로퍼티(kind, name, age, gender)를 추가하였다.

과연 console log 로 타입과 객체를 찍으면 어떤 결과가 나올까?

 

Github Commit

 

 

결과 :

objects 결과

type은 object 이다. 당연하다 우리는 new Object( ) 로 생성자 함수로 변수를 생성했기 때문이다.

 

 

2. 객체 리터럴을 이용하는 방법 (이 방법 또한 Object 내장 생성자 함수로 생성된다.)

※ 리터럴 : 예를 들어 X=‘30’에서 값을 나타내는 '30' 이 리터럴이다.

 

객체 리터럴은 var x = { } 형식으로 객체를 생성하고, { } 안에 아무것도 적지 않으면 빈 객체가 생성된다.

프로퍼티를 생성할 때에는 "프로퍼티 이름" : "값" 형태로 표기하여 객체를 생성한다.

 

프로퍼티 이름은 문자열, 숫자 가 올 수 있고,

프로퍼티 값으로는 값을 나타내는 어떤 표현식도 올 수 있으며, 함수 또한 올 수 있다.

 

1) objects.js

objects.js

// 1. Object( )
let kim = new Object();

kim.kind = 'Object';
kim.name = 'geuntae';
kim.age = 24;
kim.gender = 'male';

console.log(typeof kim);
console.log(kim);

// 2. Literal
var litKim = {
    kind : 'literal',
    name : 'geuntae',
    age : 24,
    gender : 'male'
};

console.log(typeof litKim);
console.log(litKim);

 

2번째 리터럴 방식으로 선언 된 객체의 결과는 어떨까?

 

Github Commit

 

 

결과 :

objects 결과

단지 선언 방식의 차이 일 뿐, 두 객체의 데이터 형식은 똑같다.

단, 두 객체를 구분하기 위해서 프로퍼티 kind 를 1은 Object 생성자 , 2는 리터럴 로 선언했다.

 

 

3. 생성자 함수를 이용하는 방법

생성자 함수를 선언해서 그 함수로 객체를 만드는 방법

 

1) objects.js

// 1. Object( )
let kim = new Object();

kim.kind = "Object";
kim.name = "geuntae";
kim.age = 24;
kim.gender = "male";

console.log(typeof kim);
console.log(kim);

// 2. Literal
var litKim = {
  kind: "literal",
  name: "geuntae",
  age: 24,
  gender: "male"
};

console.log(typeof litKim);
console.log(litKim);

// 3. Constructor

function Person(name, age, gender) {
  this.kind = "constructor";
  this.name = name;
  this.age = age;
  this.gender = gender;
}

let constKim = new Person("geuntae", "24", "male");
console.log(constKim);
  • 생성자 함수의 첫 문자는 대문자로한다. (js 스타일 가이드)
  • this 의 개념은 후에 나오니까 생략.
  • 생성자 함수를 사용할 때는 new 키워드를 사용해야한다.

 

Github Commit

 

결과 :

생성자 함수로 생성된 객체는 위 두 방식과 유사하지만 조금 다르다.

결과적으로 생성자의 프로토타입에서 차이가 있다.

객체의 프로토타입은 부모객체를 갖게된다. 생성자함수로 만들어진 객체의 프로토타입은 생성자 함수가 된다. 이 부분은 후에 좀더 다루겠다.

 

 

이 글은 개인 공부목적으로 작성되었습니다.

정보가 잘못 되거나 궁금한 사항은 댓글로 부탁드립니다!! 읽어주셔서 감사합니다.