생성자 함수의 역할은
→ 같은 값과 동작을 공유하는 객체를 여러개 만드는데 있다!
예를들어, new String('foo') 와 같이 new 키워드를 사용하면 자바스크립트가 생성자 함수 내에 있는 this의 값을 새로 만들어진 객체로 설정함으로써 생성자 함수는 특수한 동작을 수행하게된다.
특수한 동작을 한 생성자 함수는 기본값인 거짓스러운값(null, 0,undefined, 빈문자열 등) 이 아닌 새로 만든 객체(즉, this 값)를 반환한다. 이때 새 객체는 생성자 함수의 인스턴스 라고 부른다.
* 예제
//Person은 생성자 함수이며, new 키워드와 함께 사용하도록 만들어졌다.
var Person = function Person(living, age, gender){
/* 아래에서 this는 새롭게 작성된 객체(this = new Object(); 를 뜻한다. */
this.living = living;
this.age = age;
this.gender = gender;
this.getGender = function(){return this.gender};
/* new 키워드와 함께 생성자 함수를 호출하면 undefinde 대신 this가 반환된다. */
};
//Person 객체의 인스턴스를 만들어 cody에 저장한다.
var cody = new Person(true, 33, 'male');
//cody는 Person()의 객체이자 인스턴스다.
console.log(typeof cody); //object가 기록된다
console.log(cody); // cody가 포함된 속성과 값이 기록된다.
console.log(cody.constructor); //Person()함수가 기록된다.
사용자 정의 생성자 함수(Person())를 사용해 cody객체를 만들어봤는데
이는 Array() 생성자 함수를 통해 Array()객체를 만드는것과 같은 동작이다.
* 예제
// Array 객체의 인스턴스를 만들어 myArray에 저장한다.
var myArray = new Array(); // myArray는 Array의 인스턴스다.
console.log(typeof myArray); // object가 기록된다. 그 이유는 배열은 객체의 한 종류이기떄문에
console.log(myArray);
console.log(myArray.constructor);
'내마음대로만들어보자 > JS' 카테고리의 다른 글
사용자 정의 객체 생성자 함수 - Person() (0) | 2021.09.26 |
---|---|
자바스크립트 네이티브 / 내장 객체 생성자 (0) | 2021.09.26 |
자바스크립트 객체 (0) | 2021.08.30 |
clearQueue() 메서드 (0) | 2021.08.25 |
queue() / dequeue() 메서드 (0) | 2021.08.25 |