'Javascript'에 해당되는 글 6건

  1. 2020.11.14 Javascript Prototype 기초
JavaScript2020. 11. 14. 18:09

 

 

 

일단..포스팅하기에 앞서..자바스크립트는 자바와 아~무런 관련이 없다.

상속개념이 있고 다루는 방식이 비슷한 면이 있지만..

이름도 비슷하지만..만들어진것에 대해서는 전혀 실제로 관련이 없다고.ㅎㅎ

실제로 상속 방식도 자바와는 다르다. 이제 설명~

프로토타입(prototype)

자바스크립트의 모든 객체는 프로토타입(prototype)이라는 객체를 가지고 있는데,

모든 객체는 그들의 프로토타입으로부터 프로퍼티와 메소드를 상속받게 된다.

이처럼 자바스크립트의 모든 객체는 최소한 하나 이상의 다른 객체로부터 상속을 받으며,

이때 상속되는 정보를 제공하는 객체를 프로토타입(prototype)이라고 명명한다.

자바의 최상위 객체가 Object 인것처럼, 자바스크립트도 최상위 프로토타입을 가지고 있는데,

그것은 Object.prototype 이다.

자바스크립트도 객체지향 언어이긴하나, 클래스 기반(class-based)의 객체 지향 언어와는 조금 다르게

프로토타입 기반(prototype-based)의 객체지향 언어이다.

그래서 상속의 개념이 조금 다른데, 자바의 경우는 애초에 Object라는 클래스를 상속받고 있는 구조이며

Object를 extends하고 있는것을 상속이라고 부르지만..

자바스크립트에서는 현재 존재하고 있는 객체를 프로토타입으로 사용하여,

해당 객체를 복제하여 재사용하는것을 상속이라고 부른다.

프로토타입 체인(protype chain)

자바스크립트에서는 객체 생성자를 사용해 생성된 같은 타입의 객체는 모두 같은 프로토타입을 가진다.

new 연산자를 사용해 생성한 객체는 생성자의 프로토타입을 자신의 프로토타입으로 상속받는다.

 

var deerObj = new Object(); // 이 객체의 prototype은 Object.prototype이다.
var deerArr = new Array(); // 이 객체의 prototype은 Array.prototype이다.
var date = new Date(); // 이 객체의 프로토타입은 Date.prototype이다.

 

 

var date = new Date(); // 이 객체의 경우는 Date.prototype 뿐만 아니라 
                       //Object.prototype도 프로토타입으로 가진다.
                       //모든 객체는 Object.prototype을 상속받기때문에
​

 

 

Object.prototype 객체는 어떠한 프로토타입도 가지지 않으며, 아무런 프로퍼티도 상속 안받는다.

그리고 위와 같이 프로토타입이 상속되는 연결 고리를 프로토타입 체인(Prototype chain)이라고 부른다.

Object.prototype 객체는 여기서도 가장 상위에 존재하는 프로토타입.

따라서 모든 자바스크립트의 객체는 Object.prototype 객체를 프로토타입으로 상속받는다.

Prototype 만들긔

프로토타입을 생성하는 가장 기본적인 방법은 객체 생성자 함수(object constructor function)를 작성하는 것.

생성자 함수를 작성하고 new 연산자를 사용해 객체를 생성하면,

같은 프로토타입을 가지는 객체들을 생성할 수 있다. 자바랑 비슷..

 

 

 

function Deer(color, name, age) { // 사슴에 관한 생성자 함수를 작성함.

    this.color = color;          // 색 프로퍼티

    this.name = name;            // 이름 프로퍼티

    this.age = age;              // 나이 프로퍼티

}

var myDeer = new Deer("갈색", "사스미", 13);
document.write("저기 저 사슴의 색은 " + myDeer.color + "이고, 이름은" + myDeer.name + "이다.");

 

 

Function을 추가할 수도있고..프로퍼티를 추가할 수도 있고..다루는 방법도 그 뒤로 무궁무진하게 있지만..

이번 포스팅에서 다루지는 않겠음..프로토타입의 기본에 대해 짚고 넘어가는게 목적이라..

 

 

Posted by 사슴영혼'-'