2012-10-10 10 views
6

Supposons que si je définis une classe dans file1.jsComment instancier une classe javascript dans un autre fichier js?

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

Maintenant, si je veux créer un objet client dans file2.js

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

Je reçois exception: Customer is undefined, not a constructor.

Mais quand je crée un objet client dans file2.js et que je le passe à file1.js, alors ça marche. Mais je veux créer un objet client dans file1.js en utilisant new Customer(). Comment puis-je y parvenir?

+3

Ah, les joies d'essayer d'utiliser JS comme langage OOP. – NullUserException

Répondre

0

Si vous utilisez javascript HTML, vous devez inclure file1.js et file2.js dans votre html:

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

Note, file1 devrait venir en premier avant file2.

+0

J'ai essayé mais ça n'a pas marché. – Tarak

1

suggestions pour le faire fonctionner:

Quelques modifications (U oublié d'inclure un point-virgule dans la déclaration this.getName=function(){...} il devrait être this.getName=function(){...};)

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

(Cela pourrait être l'un des problèmes.)

et

Assurez-vous un lien entre les U fichiers JS dans l'ordre correct

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

J'ai tapé le code ici donc par erreur je suis parti ';'. – Tarak

6

Cela dépend de l'environnement que vous utilisez en vous suffit dans un navigateur Web pour vous assurer que file1.js est chargé avant file2.js.

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

En Node.js, la méthode recommandée est de faire un fichier1 module alors vous pouvez le charger avec la fonction require:

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

il est également possible d'utiliser le style du module de noeud en HTML nous dans la bibliothèque require.js.

2

Assurez-vous que le Royaume est chargé avant d'exécuter votre code dans fichier2 ... Si vous utilisez jQuery:

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

Ensuite, il n'a pas d'importance quel ordre les fichiers sont, le code gagné Ne pas exécuter jusqu'à ce que tous les fichiers sont chargés.

2

Vous pouvez exporter vos méthodes pour accéder à d'autres fichiers comme ceci:

file1.js

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

fichier2.js

var instance = require('./file1.js'); 
var name = instance.getName(); 
Questions connexes