2016-01-12 3 views
2

Я создаю приложение nodejs, где я определил классы в отдельных файлах. Я написал прототип для Array, который мне нужно получить во всех классах, как бы я его реализовал, я попытался определить прототип в основном файле проекта, но я все еще не могу использовать прототип во всех классах.Javascript прототип между классами и файлами

, например

Мой прототип

Array.prototype.remove = function(e) { 
    for (var i = 0; i < this.length; i++) { 
     if (e == this[i]) { return this.splice(i, 1); } 
    } 
}; 

Моя структура проекта

--main.js 
--a.js 
--b.js 

У меня есть мои main.js где я требуют все другие JS

все файлы используют прототип

+2

Что значит «не работает» означает? –

+0

Добавьте весь код прототипа, что вы пытаетесь сделать с ним в примере, а также любые ошибки. – Andy

+0

, когда все классы объявлены в том же файле, код работает. – Sidharth

ответ

2

Если другие файлы являются разными модулями, тогда он запускается в собственном контексте JS. Лучший способ - создать модуль, который добавит вашу функцию example к Array.prototype, затем из каждого модуля вызовите эту функцию, используя require.

создать модуль с именем файла extendModule.js и в том, что добавить

exports.extendModule = function(constructor) { 
    constructor.prototype.example = function() {}; 
} 

каждый модуль, который необходимо расширить Array.prototype

require("./extendModule").extendModule(Array) 
+0

спасибо, что это сработало, мне просто потребовалось это в главном файле, и он работает по всему проекту. – Sidharth

+1

Могу я просто добавить, что это действительно ДЕЙСТВИТЕЛЬНО, НЕПРАВИЛЬНАЯ идея, которая должна возиться с прототипами ... ну, в общем, ничего, что вы сами не создали. – Creynders

Смежные вопросы