특정 순서로 파일을 포함시키지 않고도 프로토 타입 상속을 어떻게 활용합니까?

StackOverflow https://stackoverflow.com/questions/279391

  •  07-07-2019
  •  | 
  •  

문제

JavaScript를 개발할 때 JavaScript 코드를 다른 파일로 분리 한 다음 스크립트를 실행하여 파일을 연결하고 결과 파일을 압축하거나 포장합니다. 결국, 제작 사이트에 포함시켜야 할 파일 하나가 있습니다.

이 접근법은 일반적으로 효과가 있었지만 프로토 타입 상속에 문제가 발생하기 시작했습니다. 구체적으로, 한 클래스가 다른 클래스에서 상속되는 경우, 상속 재산이 작동하려면 부모 클래스의 파일을 이미 포함시켜야합니다. 내가 사용하는 연결 스크립트가 단순히 파일로 가득 찬 디렉토리를 연결하는 경우, 아동 수업이 부모 클래스 전에 코드에서 발생할 수 있습니다. 이와 같이:

parent_class.js

var Namespace = Namespace || {};    

Namespace.Parent = function () { };
Namespace.Parent.prototype.doStuff = function () { ... };

child_class.js

var NameSpace = Namespace || {};

Namespace.Child = function () { ... };
Namespace.Child.prototype = new Namespace.Parent();

이 작동하는 유일한 방법은 parent_class.js가 child_class.js 앞에 포함되어있는 경우, 이는 상위 스크립트가 부모 코드 앞에 자식 코드를 배치하는 경우에는 발생하지 않을 수 있습니다.

기능이 동일하도록이 코드를 작성하는 방법이 있지만 코드가 작성된 순서가 더 이상 중요하지 않습니까?

편집 : 네임 스페이스를 사용하는 것을 잊어 버렸으므로 코드에도 추가하여 상황을 조금 바꿀 수 있습니다.

도움이 되었습니까?

해결책

내가 사용하는 연결 스크립트가 단순히 파일로 가득 찬 디렉토리를 연결하는 경우, 아동 수업이 부모 클래스 전에 코드에서 발생할 수 있습니다.

각 파일 이름에 정렬 순서 값을 전제하고 작업을 수행하기 전에 이름별로 정렬하는 것이 너무 간단합니까?

예 :

01_parent.js
02_child.js

그렇지 않으면, 별도의 파일로 선주문 된 파일 목록을 유지할 수 있습니다. 어쩌면 한 걸음 더 나아가 XML에서 구문 분석에 계층 적 의존 구조를 제공 할 수도 있습니까? 이것은 솔루션을 약간 과도하게 엔지니어링 할 수 있습니다

JavaScript 파일이 작성되는 방법을 결정할 방법이 없다면 문제를 처리하는 방법을위한 일부 옵션.

다른 팁

큰 앱에서 작업했을 때 사용합니다 요구 사항 내 코드를 모듈로 나누고 해당 모듈이 올바른 순서로로드되어 있는지 확인하십시오. 그런 다음 부모 수업에 따라 파생 수업을 표시합니다.

요구 사항에는 프로덕션 배포를 위해 모든 모듈을 결합하고 최소화하는 도구가 제공됩니다.

나는 당신이 이것처럼 정말 해킹 된 일을 할 수 있다고 생각합니다.

setTimeout(function() { 
  if(typeof(Parent) != "undefined" && typeof(Child) != "undefined") { 
    Child.prototype = new Parent(); 
  } else {
    setTimeout(arguments.callee, 50);
  }
}, 50);

그 코드는 어디에나있을 수 있으며, 둘 다까지 계속 실행됩니다. Parent 그리고 Child 로드되었습니다 ...하지만 나는 그렇게하지 않을 것입니다.

개인적으로, 나는 당신의 파일이 올바른 순서로 결합되어 있는지 확인합니다.

객체가 "네임 스케이션"인 경우, 중심의 연결을 통합 한 빌드 솔루션으로 전환하거나 다음과 같은 것을 사용해야합니다. dojo.require (그러나 분명히 dojo 구체적이지 않음). 기본적으로 주어진 식별자가 사용할 수 있는지 확인하고 실행을 일시 중지하고 (평가 된 AJAX 또는 삽입 된 스크립트 태그를 통해) 실행을 일시 중지 할 수있는 프레임 워크를 원합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top