function Person() { this.name = "anomymous"; this.sayHello = function() { console.log(this.name + "!!"); }; } function Nam() { this.name = "Nam"; } Nam.prototype = new Person(); var nam = new Nam(); nam.sayHello(); console.log(nam instanceof Nam); // true console.log(nam instanceof Person); // true console.log(nam.constructor); // ?? Nam이 아니라 Person!! /* 생성자 속성은 객체가 가지고 있는 것이 아니라. 프로토타입이 가지고 있다. 객체는 내부 링크로 프로토타엡에 있는 생성자 속성을 참조한다. 지금 Nam프로토타입은 그런데 new Person()으로 원래 객체(여기선 Nam)의 생성자를 가지고 있는 프로토타입을 덮어씌우면 Nam의 생성자는 연결고리를 잃는다. (원래 Nam의 생성자는 function Nam() {...} 을 가리키고 있어야 한다.) 따라서 nam.constructor를 실행하면 [Function: Person] 이 나온다. 뭐 잘 작동하기는 하지만 연결이 끊어진다는 것은 좋은 것이 아니다. */
괜찮은 링크.
https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67
댓글 없음:
댓글 쓰기