사용하여 응용 프로그램 및 prototype.js에 (1.3)의 이전 버전이 있습니다이것은 어떻게 재귀 적 구조가됩니까?
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
지금 일반적으로이 작품을 좋아하지만, 때로는 그 마지막 함수는 재귀 전환 및 호출 스택의 크기를 초과 할 때까지 자신을 호출합니다. 자바 스크립트 마법사가 아니기 때문에 다른 사람에게이 스크립트가 상당히 명백 할 수 있습니다. 누군가가이 문제에 대해 밝히고 싶습니까?
Object.extend가 정의되어 있지 않으면 Object.prototype.extend가 재귀 적으로 변하게됩니다. 데모 코드? – 1983
나는 여기에 게시 된 그 기능이 "재귀 적으로 돌아갈 것"이라고 믿지 않는다. 절대로 스스로를 호출하지 않는다. 그런 기능의 "딥 카피 (deep copy)"버전은 원형 그래프로 진행되어 미쳐 버릴 수 있지만 게시 된 코드는 그러한 기능이 아닙니다. – Pointy
그러나 확장 기능을 호출 할 때 Object.extend가 정의되어 있지 않으면 프로토 타입에 정의 된 함수가 사용되지 않습니까? –