-
생성자와 new - 객체지향 | 생활코딩Javascript/ECMAScript 2009 (ES5) 2020. 2. 8. 16:50반응형
객체
객체란 서로 연관된 변수와 함수를 그룹핑한 그릇. 객체 내의 변수를 프로퍼티(property), 함수를 메소드(method)라고 부른다.
var person = { 'name' : 'egoing', // 프로퍼티 'introduce' : function(){ // 메소드 return 'My name is '+this.name; } } document.write(person.introduce());
만약 다른 사람의 이름을 담을 객체가 필요하다면 객체의 정의를 반복해야 할 것이다. 객체의 구조를 재활용할 수 있는 방법이 필요하다. 이 때 사용하는 것이 생성자다.
※ 프로토타입 기반 프로그래밍(Prototype-based Programming)
객체지향 프로그래밍의 한 형태의 갈래로 클래스가 없고 객체를 원형(프로토타입)으로 하여 복제의 과정을 통하여 객체의 동작 방식을 다시 사용할 수 있다. 프로토타입기반 프로그래밍은 클래스리스(class-less), 프로토타입 지향(prototype-oriented) 혹은 인스턴스 기반(instance-based) 프로그래밍이라고도 한다.
생성자
생성자(constructor)는 객체를 만드는 역할을 하는 함수다. 자바스크립트에서 함수는 재사용 가능한 로직의 묶음이 아니라 객체를 만드는 창조자라고 할 수 있다.
함수를 호출할 때 new을 붙이면 새로운 객체를 만든 후에 이를 리턴한다.
function Gundam(name){ this.name = name; this.intro = function(){ return "Code name is "+ this.name; } } var first = new Gundam("RX-78-2"); console.log(first.intro()); // Code name is RX-78-2 var zeta = new Gundam("MSZ-006"); console.log(zeta.intro()); // Code name is MSZ-006
생성자 내에서 이 객체의 프로퍼티를 정의하고 있다. 이러한 작업을 초기화라고 한다. 이를 통해서 코드의 재사용성이 대폭 높아졌다.
코드를 통해서 알 수 있듯이 생성자 함수는 일반함수와 구분하기 위해서 첫글자를 대문자로 표시한다.
자바스크립트 생성자의 특징
일반적인 객체지향 언어에서 생성자는 클래스의 소속이다. 하지만 자바스크립트에서 객체를 만드는 주체는 함수다. 함수에 new를 붙이는 것을 통해서 객체를 만들 수 있다는 점은 자바스크립트에서 함수의 위상을 암시하는 단서이면서 또 자바스크립트가 추구하는 자유로움을 보여주는 사례.
반응형'Javascript > ECMAScript 2009 (ES5)' 카테고리의 다른 글
this - 객체지향 | 생활코딩 (0) 2020.02.09 전역객체 - 객체지향 | 생활코딩 (0) 2020.02.08 객체지향 프로그래밍 - 객체지향 | 생활코딩 (0) 2020.02.07 함수의 호출 - 함수지향 | 생활코딩 (0) 2020.02.04 arguments - 함수지향 | 생활코딩 (0) 2020.02.04