JavaScript 객체 프로토타입

모든 JavaScript 객체는 프로토타입에서 속성과 메서드를 상속합니다.

이전 장에서는 어떻게 사용할 수 있는지 배웠습니다객체 생성자:

인스턴스

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
var myFather = new Person("Bill", "Gates", 62, "blue");
var myMother = new Person("Steve", "Jobs", 56, "green");

직접 시도해 보세요

우리는 이미 이해했습니다, 여러분无法존재하는 객체 생성자에 새로운 속성 추가:

인스턴스

Person.nationality = "English";

직접 시도해 보세요

생성자에 새로운 속성을 추가하려면, 반드시 생성자 함수에 추가해야 합니다:

인스턴스

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

직접 시도해 보세요

프로토타입 상속

모든 JavaScript 객체는 프로토타입에서 속성과 메서드를 상속합니다.

날짜 객체는 Date.prototype에서 상속됩니다. 배열 객체는 Array.prototype에서 상속됩니다. Person 객체는 Person.prototype에서 상속됩니다.

Object.prototype는 프로토타입 상속 라인의 최상단에 위치합니다:

날짜 객체, 배열 객체, Person 객체는 Object.prototype에서 상속됩니다.

객체에 속성과 메서드 추가

때로는 모든 주어진 유형의 존재하는 객체에 새로운 속성(또는 메서드)을 추가하고 싶을 수 있습니다.

때로는 객체 생성자에 새 속성(또는 메서드)을 추가하고 싶을 수 있습니다.

사용 프로토타입 속성

JavaScript 프로토타입 속성은 또한 객체 생성자에 새 속성을 추가할 수 있습니다:

인스턴스

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";

직접 시도해 보세요

JavaScript 프로토타입 속성은 또한 객체 생성자에 새 메서드를 추가할 수 있습니다:

인스턴스

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
    return this.firstName + " " + this.lastName;
};

직접 시도해 보세요

다만 수정하십시오당신 자신의 프로토타입을 수정하지 마세요. 표준 JavaScript 객체의 프로토타입을 수정하지 마세요.