2014-01-27 6 views
0

У меня есть большой javascript-класс на стороне клиента, определенный для приложения. Я хочу разбить этот класс на несколько файлов, чтобы люди могли работать над классом отдельно и не прерывать друг друга. Мой класс называется OC и я объявил его как следующий в файле oc.js:Как я могу разделить функцию javascript на несколько файлов, чтобы на них могли работать несколько разработчиков.

function OC(config) { 
    // omitted for brevity 
} 

этот класс имеет много членов и переменных внутри него. Теперь я готов разделить небольшие фрагменты этого файла на два новых файла. Так что я создал oc.connection.draw.js как следующее:

OC.prototype = { 
    _drawConnections: function (links) { omitted for brevity }  
} 

в первую очередь, это, кажется, не имеют доступа к аргументам моей основной функции (конфигурации) в прототипе. Работает ли это для этого, кроме создания для него локальной переменной? Во-вторых, есть ли какая-либо лучшая практика для этого в сообществе javascript? Мой идеальный результат был бы чем-то вроде частичных классов в .NET Framework.

+0

Я ничего не знаю о .net, поэтому не знаю, что это значит, но проверьте [RequireJS] (http://requirejs.org/) – pstenstrm

+0

Ну, вы можете включить свои скрипты в b rower и совместно использовать глобальное пространство имен, или вы можете использовать некоторые инструменты для NodeJS, такие как Browserify, или что-то на клиенте, например RequireJS. Есть несколько вариантов, каждый из которых имеет свои преимущества и недостатки. – elclanrs

+2

_ «Я хочу разбить этот класс на несколько файлов, чтобы люди могли работать над классом отдельно, а не прерывать друг друга» _ - вместо этого, возможно, вам стоит изучить системы управления версиями и инструменты объединения ... – CBroe

ответ

0

Ваш конструктор должен быть таким:

function OC(config) { 
    this.config = config; 
    // more stuff here 
} 

Затем вы можете расширить это следующим образом:

OC.prototype._drawConnections = function(links) { 
    // this.config is the config data 
    // more code here 
} 

Это будет работать, просто убедитесь, чтобы объединить все ваши файлы сценариев в один, прежде чем отгрузка до производства;)

+0

is this.config = config 'любой другой, если я опускаю это ключевое слово? Я знаю, что оба работают, но просто хочу знать разницу. – Milad

+0

Переменные, определенные с этим, являются членами экземпляра, созданного с помощью функции-конструктора. Переменная declare as var может быть доступна через закрытие только для кода в функции конструктора (недоступна для прототипов объявленных функций. Подробнее о конструкторских функциях и прототипе herehttp: //stackoverflow.com/a/16063711/1641941 – HMR

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