2012-07-31 12 views
7

Jestem po prostu nowym graczem w JavaScript, więc kiedy czytam dokument w języku Javascript, istnieje wiele skomplikowanych struktur, których nie mogę śledzić.JavaScript: funkcja wywołania z innego pliku

Oto krótkie wyjaśnienie kodu JavaScript, który czytam: w moim przypadku są dwa główne pliki: Helper.js i Circle.js.

W pliku Helper.js znajduje się nazwa metody: using:function(param1,param2). I poniżej jest kod Circle.js:

Helper.using('py.Figures', function (ns) { 

    ns.Circle = function (params) { 
     // some additional methods and code here 
    } 

    ns.Alert = function(){ // for the test purpose 
      alert('hello'); 
    } 
}); 

i w pliku test.html, piszę trochę kodu:

<script src="Helper.js"></script> 
<script src="circle.js"></script> 
<script> 
    test = function(){ 
     py.Figures.Alert(); // calling for testing purpose 
    } 
</script> 
<body onload="test();"></body> 

Kiedy biegnę na Chrome i widoku w konsoli, spotykam ten błąd:

Uncaught TypeError: Object # has no method 'Alert'

To znaczy, że nie importowałem jeszcze tej klasy. Proszę, powiedz mi jak wywołać funkcję z innego pliku. W moim przypadku to: powołanie Alert()

Dzięki :)

@ Edit: dodałem kilka linków dla kodu:

Helper.js

Circle.js

+0

Proponuję przesyłając skrzypce więc będziemy mogli zobaczyć całą operację. – Novak

+0

Czy 'Helper.using' działa? Czy robi to, co ma robić (tworząc przestrzeń nazw)? –

+0

* Helper.using ('py.Figures' * nie przypomina dla mnie JavaScript. –

Odpowiedz

7

Dlaczego nie weźmiesz odpowiedź na tę odpowiedź:

Including javascript files inside javascript files

W skrócie można załadować plik skryptu za pomocą AJAX lub umieścić znacznik skryptu w kodzie HTML, aby go uwzględnić (przed skryptem, który korzysta z funkcji drugiego skryptu). Opublikowany przeze mnie link jest świetną odpowiedzią i zawiera wiele przykładów i objaśnień obu metod.

+0

To jest poprawna odpowiedź! – varagrawal

1

Tak, można. Po prostu sprawdź moje skrzypce, by wyjaśnić. Dla celów demo trzymałem kod w skrzypcach w tej samej lokalizacji. Możesz wyodrębnić ten kod, jak pokazano w dwóch różnych plikach Javascript i załadować je do pliku html.

https://jsfiddle.net/mvora/mrLmkxmo/

/******** PUT THIS CODE IN ONE JS FILE *******/ 

    var secondFileFuntion = function(){ 
     this.name = 'XYZ'; 
    } 

    secondFileFuntion.prototype.getSurname = function(){ 
    return 'ABC'; 
    } 


    var secondFileObject = new secondFileFuntion(); 

    /******** Till Here *******/ 

    /******** PUT THIS CODE IN SECOND JS FILE *******/ 

    function firstFileFunction(){ 
     var name = secondFileObject.name; 
     var surname = secondFileObject.getSurname() 
     alert(name); 
     alert(surname); 
    } 

    firstFileFunction(); 

Jeśli się obiektu przy użyciu funkcji konstruktora i próbuje uzyskać dostęp do właściwości lub metody z niej w drugim pliku, to daje dostęp właściwości, które są obecne w innym pliku.

Wystarczy dbać o sekwencji włączając te pliki w index.html

Powiązane problemy