반응형
앞에서 prototype 과 __proto__ 를 알아보았다.
이번엔 특정 객체와 또 다른 특정 객체의 상속관계를 자바스크립트는 어떤식으로 만들어가는지 알아보자.
cf. o.o.p 에 대해 어느정도 이해가 있어야 코드를 이해할수 있을것 같다.
var Person = function() {
this.canTalk = true;
};
Person.prototype.greet = function() {
if (this.canTalk) {
console.log('Hi, I am ' + this.name);
}
};
var Employee = function(name, title) {
//Person.call(this);
this.name = name;
this.title = title;
};
person 과 employee 객체에서 상속을 사용하려면,
Employee.prototype = Object.create(Person.prototype);
mdn에서 Object.create( ) 의 역할은 지정된 프로토타입 객체 및 속성을 갖는 새 객체를 만든다. 라고 되어있으므로,
Employee 에 prototype 프로퍼티가 Person.prototype 객체를(새로 만들어진) 가리키게 된다.
그림으로 보자.
이런식으로 된다. 하지만 constructor 까지 person으로 가져오기때문에 이부분은 다시 Employee로 바꾸어 주어야 한다.
Employee.prototype.constructor = Employee;
기본적인 자바스크립트에서 상속은 이런식으로 하게 되고 부모 객체의 프러퍼티를 사용하려면 call,appy 메서드를 사용해서 강제로 바인딩해주어 사용해야 한다.
var Employee = function(name, title) {
Person.call(this);
this.name = name;
this.title = title;
};
2번째 줄처럼 call을 사용해서 person 의 프로퍼티를 사용한다.
반응형
'Frontend > JAVASCRIPT' 카테고리의 다른 글
[Jacascript] call, apply, bind and this (0) | 2020.02.21 |
---|---|
[Javascript] class inheritance in ES6 (0) | 2020.02.14 |
[Javascript] prototype, __proto__, constructor (0) | 2020.02.14 |
[Javascript] callBack은 call me back (0) | 2020.01.26 |
[Javasvript] this는 가리킬뿐, this의 4가지 바인딩 (0) | 2020.01.26 |