2012-10-10 18 views
6

Supponiamo che se definisco una classe in file1.jsCome istanziare una classe javascript in un altro file js?

function Customer(){ 
    this.name="Jhon"; 
    this.getName=function(){ 
     return this.name; 
    }; 
}; 

Ora, se voglio creare un oggetto Cliente file2.js

var customer=new Customer(); 
var name=customer.getName(); 

io sono sempre un'eccezione: Customer is undefined, not a constructor.

Ma quando creo un oggetto cliente in file2.js e lo passo a file1.js quindi funziona.

file1.js 

    function Customer(){ 
     this.name="Jhon"; 
     this.getName=function(){ 
      return this.name; 
     } 
    } 
    function customer(){ 
     return new Customer(); 
    } 

file2.js 

    var customer=customer(); 
    var name=customer.getName(); 

ma voglio creare un oggetto cliente in file1.js utilizzando nuovi clienti(). Come posso ottenerlo?

+3

Ah, le gioie di provare a utilizzare JS come linguaggio OOP. – NullUserException

risposta

0

Se si utilizza JavaScript in HTML, si dovrebbe includere file1.js e file2.js all'interno del vostro HTML:

<script src="path_to/file1.js"></script> 
<script src="path_to/file2.js"></script> 

nota, file1 dovrebbe venire prima di file2.

+0

Ho provato questo ma non ha funzionato. – Tarak

1

eventuali suggerimenti per farlo funzionare:

Alcune modifiche (U dimenticato di includere un punto e virgola nella dichiarazione this.getName=function(){...} dovrebbe essere this.getName=function(){...};)

function Customer(){ 
this.name="Jhon"; 
this.getName=function(){ 
return this.name; 
}; 
} 

(Questo potrebbe essere uno del problema.)

e

assicurarsi U collegare i file JS nell'ordine corretto

<script src="file1.js" type="text/javascript"></script> 
<script src="file2.js" type="text/javascript"></script> 
+0

Ho digitato il codice qui, quindi per errore ho lasciato ';'. – Tarak

6

Dipende da quale ambiente si sta eseguendo in In un browser web è sufficiente assicurarsi che file1.js viene caricato prima file2.js:.

<script src="file1.js"></script> 
<script src="file2.js"></script> 

Nel node.js, il modo consigliato è quello di fare un file1 module allora si può caricare con la funzione require:

require('path/to/file1.js'); 

E 'anche possibile utilizzare lo stile del modulo del nodo in HTML noi la libreria require.js.

2

Assicurarsi che il DOM è stato caricato prima di eseguire il codice in file2 ... Se stai usando jQuery:

$(function(){ 
    var customer=customer(); 
    var name=customer.getName(); 
}); 

Allora non importa quale ordine i file sono in, il codice ha vinto eseguire finché tutti i file non sono stati caricati.

2

È possibile esportare i metodi per accedere da altri file in questo modo:

file1.js

var name = "Jhon"; 
exports.getName = function() { 
    return name; 
} 

file2.js

var instance = require('./file1.js'); 
var name = instance.getName(); 
Problemi correlati