Js

프로토 타입 , 클래스, 인스턴스

수찌얌 2023. 3. 9. 21:02

프로토타입 (prototype)

  • 객체의 원래 상태
  • 같은 생성자로부터 생성된 객체는 프로토타입을 공유
  • 메모리 절약

1. 자바스크립트 내에 존재하는 생성자함수는

     암시적으로 프로토타입 존재 

     ex) Array()

 

2. 직접 생성한 생성자함수에서 만든 함수를

     공통으로 사용할 경우

     명시적으로 프로토타입 생성해야 됨

     ex) Info()

프로토타입을 공유

프로토타입 체인 

최 상위 객체 = null

 

클래스 (Class)

  • 객체를 생성하기 위한 틀, 객체X
  • 클래스 안에 데이터 X
  • 메모리에 올라가지 X

클래스 사용

Getter

  • 프로퍼티 값을 가져오기 위한 함수

Setter

  • 프로퍼티 값을 설정하기 위한 함수

get 함수명() {

return this._변수명;

}

 

set 함수명(value) {

this._변수명 = value;

}


class Info {
	//생성자
    constructor({name, age}) {
        this.name = name;
        this.age = age;
        console.log(this.name);
    }

    //getter, setter시 _붙임
    //getter
    get name() {
        return this._name;
    }
	//setter
    set name(value) {
        this._name = value;
    }
	//함수
    write() {
        return `이름은 ${this.name}, 나이는 ${this.age} 살`;
    }
}   

//클래스 선언
let info = new Info({name:"홍길원", age: 31});
console.log(info.name);

// info.name = "홍길삼";
// console.log(info.name);

Private 프로퍼티 

  • 외부 접근 불가능
  • Class안 에서만 사용, 변경 가능

Public 프로퍼티

  • 외부 접근 가능
  • Class 외부에서 사용, 변경 가능

Private 프로퍼티 

  • 변수 앞에 # 붙임

Public 프로퍼티

  • 변수 앞에 # 안붙임
class Info {
    publicValue = "50kg";
    #privateValue = "홍길순";
}

 

인스턴스 (Instance)

  • 클래스나 프로토타입을 이용하여 만든 것
  • 프로퍼티와 메소드를 상속 받음
  • 클래스로 만든 객체