2012-10-10 4 views
6

Предположим, если я определить класс в file1.jsКак создать экземпляр класса javascript в другом файле js?

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

Теперь, если я хочу, чтобы создать объект клиента в file2.js

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

Я получаю исключение: Customer is undefined, not a constructor.

Но когда я создаю объект customer в файле2.js и передаю его файлу file1.js, тогда он работает.

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

, но я хочу создать объект customer в файле1.js с использованием нового Customer(). Как я могу это достичь?

+3

Ах, радости от попыток использовать JS как язык ООП. – NullUserException

ответ

0

Если вы используете JavaScript в HTML, вы должны включать file1.js и file2.js внутри вашего HTML:

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

Note, file1 должен прийти первым, прежде чем file2.

+0

Я пробовал это, но это не сработало. – Tarak

1

Возможные предложения, чтобы сделать его работу:

Некоторые модификации (U забыл включить точку с запятой в операторе this.getName=function(){...} должно быть this.getName=function(){...};)

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

(Это может быть одна из проблем.)

и

Убедитесь U Свяжите файлы JS в правильном порядке

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

Я набрал код здесь, поэтому по ошибке я оставил ';'. – Tarak

6

Это зависит от того, в какой среде вы работаете в в веб-браузере вы просто должны убедиться, что file1.js будет загружен до file2.js:.

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

В node.js, рекомендуемый способ это сделать file1 в module, то вы можете загрузить его с require функции:

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

также можно использовать стиль модуля узла в HTML нас библиотека require.js.

2

Убедитесь, что дом загружен, прежде чем запустить свой код в file2 ... Если вы используете JQuery:

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

Тогда не имеет значения, в каком порядке эти файлы в код выиграл 't запускается до тех пор, пока все файлы не будут загружены.

2

Вы можете экспортировать свои методы, чтобы получить доступ из других файлов, как это:

file1.js

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

file2.js

var instance = require('./file1.js'); 
var name = instance.getName(); 
Смежные вопросы