2012-10-10 24 views
6

Supongamos que si defino una clase en file1.js¿Cómo crear una clase de JavaScript en otro archivo js?

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

Ahora si quiero crear un objeto de cliente en file2.js

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

Me estoy haciendo una excepción: Customer is undefined, not a constructor.

Pero cuando creo un objeto de cliente en file2.js y lo paso a file1.js, entonces funciona.

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(); 

pero quiero crear un objeto de cliente en file1.js utilizando nuevo Cliente(). ¿Cómo puedo lograr eso?

+3

Ah, las alegrías de tratar de usar JS como un lenguaje OOP. – NullUserException

Respuesta

0

Si está utilizando Javascript en HTML, debe incluir file1.js y file2.js dentro de su html:

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

Nota, file1 debe venir primero antes de file2.

+0

Intenté esto pero no funcionó. – Tarak

1

sugerencias posibles para hacer que funcione:

algunas modificaciones (T olvidó incluir un punto y coma en la declaración this.getName=function(){...} debe ser this.getName=function(){...};)

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

(Esto podría ser uno de los problemas.)

y

Asegúrese T vincular los archivos JS en el orden correcto

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

Escribí el código aquí, así que por error me fui ';'. – Tarak

6

Depende de qué entorno se está ejecutando en un navegador web En sólo hay que asegurarse de que se carga antes de file1.jsfile2.js:.

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

En Node.js, la forma recomendada es hacer un fichero1 module, puede cargar con la función require:

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

también es posible usar el estilo módulo de nodo en HTML con nosotros ing la biblioteca require.js.

2

Asegúrese de que el DOM se carga antes de ejecutar el código en archivo2 ... Si estás usando jQuery:

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

Entonces no importa el orden en que los archivos están en el código de ganado corre hasta que se carguen todos los archivos.

2

Puede exportar sus métodos para acceder a otros archivos como esto:

file1.js

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

fichero2.js

var instance = require('./file1.js'); 
var name = instance.getName(); 
Cuestiones relacionadas