JavaScript에서 프로토 타입 개념이 생소했습니다. 프로토 타입 '상속'을 수행하는 많은 방법이있는 것처럼 보이기 때문에 혼란 스럽습니다. Java 백그라운드에서 오는 코드는 대부분 고전 OOP처럼 구조화되어 있습니다. 이는 쉽게 이해할 수있는 방법이기 때문입니다.프로토 타입 함수가 정의되지 않았습니다
프로토 타입에 정의 된 함수를 호출하고 싶지만, Uncaught ReferenceError: getShape is not defined
이 발생합니다. 나는이 프로토 타입을 올바르게 수행하고 있는지 확신 할 수 없다.
function mouseOverAnimation($main,svgId) {
this.svg = getShape(svgId,$main); // this line works
function getShape(shapeId,parent) {
if (parent == undefined) { parent = svg; }
var shape = parent.find(shapeId);
return shape;
}
}
function someAnimationTest($main) {
this.prototype = new mouseOverAnimation($main,'#icon1');
this.ball1 = getShape('#ball1'); // this line is giving me the error
}
new someAnimationTest($('body'));
은 내가 뭘하려고 오전 곧 설명하기 위해 : 나는 여러 SVG 아이콘을 가지고 각자가 마우스 오버에 애니메이션을 필요로 여기
내 코드의 조각이다. 애니메이션의 코드는 특정 동작을 제외하고 대부분 동일하므로 프로토 타입을 사용하는 것이 좋은 생각이라고 생각했습니다. 모든 아이콘에 대해해야 할 첫 번째 일은 내가 독립적으로 움직여야하는 모든 모양에 대해 vars를 얻는 것입니다. 이것은 내가getShape()
기능으로 무엇을하려하는지입니다.
getShape()
함수는 실제로 this.prototype = new mouseOverAnimation()
을 호출하여 상속 되나요? 어떻게 불러야합니까? 주요 문제와 관련 될 수있는 몇 가지 측면 질문
부속 :
좀 더 복잡한 자바 스크립트 상당히 새로운입니다. 그 때문에 나는 this
, prototype
과 내가 '오버로딩'기능을 수행하는 방법을 잘 모르고있다. 제발 진정으로 좋지 않은 것을 수정 해주세요. 또한이 스 니펫에는 jQuery가 사용됩니다. 애니메이션에 사용중인 라이브러리에 jQuery가 포함되어 있기 때문에 내가 사용한 예제에서 이와 같이 사용되었습니다. 그러나이 경우에는 실제로 필요하지 않습니다. 편의상이 $('body')
을 사용하는 것이 좋습니까? 아니면 바닐라 JS로 변경하는 것이 더 낫습니까? someAnimationTest
방법의 범위에는 getShape
방법이 없기 때문에
앞에'새로운 mouseOverAnimation로 호출 할 필요가 (...)'인스턴스'에서 속성을 상속하는 것 mouseOverAnimation.prototype'입니다. 지역 변수는 상속되지 않습니다. 나는 당신의'someAnimationTest'도 아무것도 상속 받아야한다고 생각하지 않습니다. – Bergi
나는이 프로토 타입 상속을 전혀 이해하지 못한다는 것이 분명하다. 나는 그것을 더 공부하기 위해 되돌아 갈 필요가있다. 이것에 대한 좋은 소식통에 대한 조언이 있습니까? 상속해야하는'mouseOverAnimation()'에 많은 vars와 함수가 있습니다. 나는 정말로 mouseOverAnimation()을 상속하기 위해서 다른 함수들을 필요로한다. 나는 아마 지금 고전적인 OOP 개념에 너무 붙어있다. – Rick
'getShape'가 애니메이션 객체의 * method *이어야하는 이유가 전혀 없습니다.정적 헬퍼 (helper) 함수로 더 잘 맞을 것 같아요. 어디에서나 호출 될 수 있습니다. – Bergi