function Person() {}
Person.prototype // { constructor : Person() }, 만들어진 프로토타입 객체
Person.prototype.constructor // Person() {}
__proto__
는 프로토타입 객체를 참조function Person() {}
var joon = new Person(); // 새로운 객체 생성
var jisoo = new Person();
joon.__proto__ // { constructor : Person() }
// 만들어진 객체의 __proto__ 속성은 프로토타입 객체를 참조
function Person() {}
var joon = new Person();
var jisoo = new Person();
// 프로토타입 객체에 getType메소드 추가
Person.prototype.getType = function () {
return '인간';
};
joon.getType(); // '인간'
jisoo.getType(); // '인간'
Person.prototype
으로 접근Person.prototype
)function Person() {}
var joon = new Person();
var jisoo = new Person();
Person.prototype.getType = function () { // 프로토타입에 메소드 추가
return '인간';
};
joon.getType = function () { // joon객체에 메소드 오버라이드
return 'joon이라는 인간';
};
jisoo.age = 25; // jisoo에 age 속성 추가
joon.getType(); // joon이라는 인간
jisoo.getType(); // 인간
joon.age; // undefined
jisoo.age; // 25
function Person(name) {
this.name = name || 'deault 이름';
}
Person.prototype.getName = function () {
return this.name;
};
function Korean(name) {
// this 바인딩
// Person함수를 호출, 바인딩할 this 값은 Korean의 this, name을 파라미터로 넘겨줌
Person.call(this, name);
}
// Person의 프로토타입 객체를 Korean의 프로토타입으로 사용(공유)
Korean.prototype = Person.prototype;
var kor1 = new Korean('지수');
kor1.getName(); // 지수
var kor2 = new Korean(); // deault 이름
kor2.getName();