2014-06-16 3 views
1

내 문제 내 짧은 문제 : js 파일 (파일 이름 : generation.js)에 객체 생성자를 만들었 으면합니다. 다른 js 파일 (파일 이름 : timeline.js)에 해당 생성자가있는 객체를 만듭니다. 이렇게하려고하면 오류 메시지가 나타납니다. 참조되지 않은 ReferenceError : 생성 (생성하려는 개체)이 정의되지 않았습니다.별도의 js 파일에있는 JS의 객체 생성자를 통해 객체 만들기

HTML에는 js 파일이 적절한 순서로 있습니다. 먼저 generation.js, timeline.js가 있습니다. 나는 또한 jQuery 라인을 제자리에두고있다. 개체 정의가 (generation.js에서) 동일한 파일에서 생성자를 사용하려고하면 올바르게 작동합니다. 그런 다음 코드를 지나서 새 파일에 복사하고 더 이상 작동하지 않습니다.

코드 :

Generation.JS :

내가

$(document).ready(function(){ 

function generation() { 
    this.var1 = ''; 
    .... // some variables 
    this.genFactory = function(agents) { // some function that creates even more 
    objects and other functions 
    }; 
}; 
}); 

Timeline.JS 객체 생성자를 정의하는 곳은 다음과 같습니다

을 콘솔 로그 'ASD'나는

$(document).ready(function(){ 

    $('#start').click(function(){ 
      console.log('ASD'); //just to check if the file works 
      gen1 = new generation(); //the error message points here 
      gen1.genFactory(3); 
      gen1.shuffle(individuals); //this is just an other method of the 
      generation object 

    }); 
}); 

그냥 Timeline.js 작동하는지 확인하기 위해 세대 개체의 인스턴스를 생성하고 싶은 경우

이다.

앞으로 어떤 제안이 있으리라 기대합니다!

답변

2

generation 기능을 공개적으로 창에 지정해야합니다. 그러한 경우의 일반적인 접근법은 이러한 모든 객체 생성자와 변수를 포함하는 app 변수를 갖는 것입니다.

$(document).ready(function(){ 

    window.app = window.app || {}; 

    $('#start').click(function(){ 
      console.log('ASD'); //just to check if the file works 
      gen1 = new app.generation(); //the error message points here 
      gen1.genFactory(3); 
      gen1.shuffle(individuals); //this is just an other method of the 
      generation object 

    }); 
}) 
+1

명시 적으로 어딘가에'window.app'를 지정하지 않으면 :

$(document).ready(function(){ window.app = window.app || {}; app.generation = function() { this.var1 = ''; .... // some variables this.genFactory = function(agents) { // some function that creates even more objects and other functions }; }; }); 

그리고 당신의 Timeline.js에

다음과 같이 당신이 당신의 생성자를 호출합니다 파일 : 당신의 Generation.js에서이 코드를 사용해야 파일 두 클로저는 결국 자신의 로컬 'var'에 할당됩니다. – dfreeman

+0

네, 죄송합니다. –

+0

고마워요! 그것은 효과가있다! 이 코드가 정확히 무엇을 설명해 주시겠습니까? 윈도우에서 상속받은 앱 객체를 생성하는 것 같습니다. 그리고 왜 그 파일을 두 파일에 모두 포함시켜야합니까? – PeterAL