js_prototype

BABY CAT·2022년 10월 5일
0

HTML, CSS, JavaScript

목록 보기
16/23

prototype : dic. 원형

js는 클래스 개념이 없다. 그래서 객체를 복사하여 새로운
객체를 생성하는 프로토타입 기반의 언어다.
프로토타입 기반 언어는 객체 원형인 프로토타입을 이용하여 새로운 객체를 만들어낸다.

js는 상속도 없다. js는 prototype을 기반으로 상속을 흉내내어 구현
---ECMA6 표준에서는 Class 문법이 추가

프로토타입 객체란

new 함수이름(); 을 통해 생성된 모든 객체의 원형이 되는 객체.

function Person(){}

var joon = new Person()
var jisoo = new Person();

Person.prototype.getType = function(){
    return "인간";
};
console.log(joon.getType());
console.log(jisoo.getType());

Person.prototype 펄슨의 프로토타입이 joon 과 jisoo

proto

js에서는 불린,넘버,스트링,널,언디파인 빼고는
모두 객체다. 함수도 객체.
객체 안에는 proto(비표준) 속성이 있다.
이 속성은 객체가 만들어지기 위해 사용된 원형인 프로토타입 객체를 숨은 링크로 참조하는 역할을 한다.

프로토타입의 활용, 중요성

js로 class 흉내내기

function Person() {
  this.eyes = 2;
  this.nose = 1;
}
var kim  = new Person();
var park = new Person();
console.log(kim.eyes);  // => 2
console.log(kim.nose);  // => 1
console.log(park.eyes); // => 2
console.log(park.nose); // => 1

이렇게하면 객체 하나당 2개의 메모리가 필요하다
객체가 100개면 2000개의 메모리 할당
이 문제를 프로토타입으로 해결

function Person() {}
Person.prototype.eyes = 2;
Person.prototype.nose = 1;
var kim  = new Person();
var park = new Person():
console.log(kim.eyes); // => 2

메모리 2개로 모든 뉴펄슨으로 생성된 모든 객체의 속성을 지정해주었다.
뉴펄슨으로 생성된 객체는 어딘가의 공간에 있는 펄슨.프로토타입을 가져다 쓰는 것.

0개의 댓글