Stoyan Stefanov의 Object oriented javascript 책을 읽고 있는데 완전히 혼란스러워합니다. 함수가 있다고 가정 해보십시오.무한 생성자에 갇혀 있습니다 .prototype.constructor.prototype chain
function Test(){
this.greeting = 'hello';
}
Test.prototype.farewell = "bye"
test = new Test();
test.constructor; //returns Test()
test.constructor.prototype; //returns {farewell:"bye"}
test.constructor.prototype.constructor; //returns Test()
이 책에는 프로토 타입이 객체이기 때문에 생성자가 있어야한다고 써 있습니다. 위의 예제에서 보듯이 프로토 타입의 생성자는 test
의 생성자와 같습니다. ie Test()
예상 되나요?
이 책은 "잠시 동안 계속 될지도 모르겠지만 궁극적으로는 최고 수준의 부모 인 Object()
개체에 내장됩니다." 그러나 체인의 모든 생성자가 Test()
을 반환하기 때문에 나는 무한 루프에 갇혀있는 것 같습니다. 어떻게 Object()
에 도착할 수 있습니까?
아무도 정리할 수 있습니까? (나는이 체인이 유용한 이유를 모르겠습니다.)
당신의 책이 말하는 사슬이 아닙니다. 방금 생성자와 그것의'.prototype' 사이의 순환 참조에 갇혀 있습니다. – Bergi
책이 말하는 체인은 무엇입니까? – Lars
"프로토 타입 체인", 즉 각 객체가 속성을 상속하는 다른 객체와 보이지 않는 링크에 대해 이야기하고 있다고 생각합니다. 예 : "test -> Test.prototype -> Object.prototype -> null' (여기서'->'은 그 링크입니다) – Bergi