일관되지는 당신이 Object.getPrototypeOf(Child)
와 아이의 프로토 타입 객체를 선택하면 가지가 모두 당신이 function Empty(){}
수 있도록 프로토 타입 객체의 밀회를 해결하는 대신의 Child.prototype = new Parent();
.second의 Child.__proto__ = new Parent()
를 사용해야 두에 의해 발생 모든 프로토 타입 체인의 문제. 새 지정 후 Object.getPrototypeOf(Child)
의 결과가 표시되면 부모 프로토 타입 toString() 메서드를 정의하지 않은 경우 ()을 얻습니다. 있으면 부모 (Child prototype) prototype toString() 메서드) 이는 Child가 이라는 객체 (프로토 타입 속성에)를 가지고 있다는 것을 의미합니다. 당신은 세 가지 선택이 그 때는 :
1.assign toString()를 아동에 대한 방법은 자체 객체 :
Child.toString = function(){ return this.name }
을이 경우에 당신이 때문에 생성자 변경되었습니다 프로토 타입 대입 한 후 this.constructor.name
를 사용하지 말아야합니다 학부모.
2.define 아이 프로토 타입 (부모) toString() 메소드 :
Child.__proto__.toString = function(){ return this.name }
3.define 아이가가 프로토 타입> 프로토 타입 (Object)을 toString() 메소드 :(재정)
Parent.prototype.toString = function(){ return this.name }
일부 관측 : 나는 엉덩이에 대한 __proto__
을 사용
1. 이유 시작 시점에서 객체의 생성자 함수의 원형 프로토 타입 속성에 액세스하여이를 변경하려고했습니다.
2. return this.name
을 사용했습니다.이 메서드는 자식에서 호출되므로 자식 개체를 참조하기 때문에 사용했습니다. 내가 옵션 3에 옵션 2 및 prototype
에 __proto__
을 사용
3. 이유는 Object 생성자가 변경되지 않은 경우 우리는 Object 생성자가 변경 __proto__
및 prototype
을 사용하는 것입니다.
4. toString()
메서드를 테스트하려면 대신 alert(Child)
을 사용해야합니다.이 답변의
http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/
모든 측면은 크롬 JS 콘솔을 사용하여 테스트 : 여기
당신에게 프로토 타입에 대한 많은 도움이 기사입니다.
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/constructor에서
는'constructor'는 : 인스턴스의 prototype_을 만든 개체 함수에 대한 참조를 _Returns. 그래서 정확히 무엇을해야하는지, 당신은 다른 기능 ('constructor'이 아닌)을 찾고 있습니다. 고전 스타일 하위 분류를 모방하는 기사가 많이 있습니다. 원하는 경우 더 간단하게 기생하는 상속 경로를 사용할 수도 있습니다. –