웹/JavaScript

[JavaScript] 프로토타입

caramel-bottle 2023. 10. 30.

프로토타입(prototype)

모든 객체는 프로토타입이라는 객체를 가지고 있음

모든 객체는 프로토타입으로부터 프로퍼티와 프로퍼티 메소드를 상속받음

프로토타입은 객체의 부모 객체

모든 객체는 최소한 하나 이상의 다른 객체로부터 상속을 받으며 상속되는 정보를 제공하는 객체를 프로토타입이라고 함

 

모든 객체는 Object.prototype을 기본으로 가진다.

모든 객체는 Object.prototype의 메서드와 프로퍼티를 상속받는다.

 

객체에 프로퍼티와 메서드 추가

function Dog(color, name, age){
    this.color = color;
    this.name = name;
    this.age = age;
}

const Kuma = new Dog('brown', '쿠마', 10);
console.log(`이름: ${Kuma.name}`);
console.log(`색상: ${Kuma.color}`);
console.log(`나이: ${Kuma.age}`);

// 객체에 프로퍼티와 메서드 추가
Kuma.family = '포메라니안';
Kuma.getFamily = function(){
    return this.family
}

// 객체에 추가된 프로퍼티 메서드 사용
console.log(`종: ${Kuma.family}`);
console.log(`getFamily: ${Kuma.getFamily()}`);

 

프로토타입에 프로퍼티와 메서드 추가

function Dog(color, name, age){
    this.color = color;
    this.name = name;
    this.age = age;
}

const Kuma = new Dog('brown', '쿠마', 10);

const Obok = new Dog('white', '오복', 16);
console.log(`이름: ${Obok.name}`);
console.log(`색상: ${Obok.color}`);
console.log(`나이: ${Obok.age}`);

Dog.prototype.owner = '김오너';
Dog.prototype.run = function(){
    return this.name + ' 달립니다.';
}

console.log(`소유자: ${Kuma.owner}`);
console.log(`run: ${Kuma.run()}`);

console.log(`소유자: ${Obok.owner}`);
console.log(`run: ${Obok.run()}`);


 

' > JavaScript' 카테고리의 다른 글

[JavaScript] 객체  (0) 2023.10.30
[JavaScript] 호이스팅  (0) 2023.10.29
[JavaScript] 함수  (0) 2023.10.29
[JavaScript] 배열  (0) 2023.10.29
[JavaScript] 제어문(조건문, 반복문)  (1) 2023.10.29

댓글