В большинстве случаев они по существу одинаковы, но вторая версия сохраняет память, потому что для каждого объекта есть только один экземпляр функции, а не отдельная функция для каждого объекта.
Причина использования первой формы является доступ к «частным членам». Например:
var A = function () {
var private_var = ...;
this.x = function () {
return private_var;
};
this.setX = function (new_x) {
private_var = new_x;
};
};
Из-за правил определения javascript private_var доступен функции, назначенной this.x, но не вне объекта.
Не изобретайте еще один язык правил.
Или использование Python или использование некоторый другой существующий, уже отлаженный и рабочий язык как BPEL.
Просто пишут Ваши правила в Python, импортируют их и выполняют их. Жизнь более проста, намного легче отладить, и Вы на самом деле решили фактическую проблему показаний, не создавая другую проблему.
Воображают этот сценарий. Ваши повреждения программы. Это - теперь или парсинг правила, выполнение правила или само правило. Необходимо отладить все три. Если бы Вы записали правило в Python, то это было бы правило, и это было бы этим.
"Я думаю, что было бы трудно отфильтровать Python до такой степени, когда, пользователь не мог непреднамеренно сделать некоторого сумасшедшего материала с правилами, который не был предназначен".
Это в основном, "Я хочу записать компилятор" аргумент.
1) Вы - основной пользователь. Вы запишете, отладите и поддержите правила. Есть ли действительно армии сумасшедших программистов, которые будут делать сумасшедшие вещи?В самом деле? Если существует какой-либо потенциальный сумасшедший пользователь, говорят с ними . Преподавайте Их. Не боритесь против них путем изобретения нового языка (который необходимо будет затем поддержать и отладить навсегда.)
2) Это - просто обработка журнала. Нет никакой реальной стоимости для сумасшествие . Никто не собирается ниспровергать мировую экономическую систему с дефектной обработкой журнала. Не делайте небольшую задачу с несколькими дюжинами строк Python на 1 000 интерпретаторов строки для интерпретации нескольких дюжин строк некоторого языка правила. Просто запишите несколько дюжин строк Python.
Просто запись это в Python так быстро и ясно как Вы можете и идти дальше к следующему проекту.
Немного трудно ответить на вопрос, не зная, какова область применения.
На одном конце спектра простой одноразовый подход как Вы, сделали предложение. Это прекрасно, если правила - немногие, относительно простые, и Вы не делаете ничего более сложного, чем агрегирующиеся сообщения журнала, которые соответствуют указанным правилам.
С другой стороны спектра тяжеловес, обосновывающий систему, что-то как CLIPS, который имеет интерфейс Python . Это - реальный механизм правил с выводом и предлагает способность сделать сложное обоснование. При создании чего-то как диагностический механизм, который работает прочь журнала программы, это могло быть более соответствующим.
РЕДАКТИРОВАНИЕ:
я сказал бы, что текущая идея реализации хорошо для того, что Вы делаете. Что-либо намного больше и я думаю, что Вы, вероятно, рискуете сверхразработкой решение. Это, кажется, получает то, что Вы хотите, соответствуя на сообщениях журнала только на основе нескольких различных критериев.
Единственное место это отличается от самого синтаксиса Python, message ~ "program\\[\d+\\]: message"
часть, поэтому интересно, нужен ли Вам действительно новый синтаксис.
Обновление: хорошо, у Вас есть или проблемы удобства использования или безопасности - это разумно. Пара предложений:
Понимают намек от Awk и оптимизировали синтаксис сопоставления с образцом, например, /program\[\d+\]: message/
вместо message ~ "program\\[\d+\\]: message"
.
я реализовал бы его путем перевода в выражение Python, поскольку вход анализируется, вместо того, чтобы создать дерево объектов оценить, если Вы не ожидаете делать больше операций на этих вещах, чем оценка. Это должно нуждаться в меньшем количестве кода и работать быстрее. Верхний уровень мог бы пойти что-то как:
def compile(input):
return eval('lambda message, severity: %s' % parse(input))
Другая идея, далее далеко от дома: запишите свое приложение в Lua. Это разработано для непрограммистов для расширения программ обоснованно безопасно, не будучи должен изучить много. (Это использовалось тот путь успешно, и можно поиграть в песочнице оценку, таким образом, код пользователя не может достигнуть возможности, Вы не передаете ему явно, мне говорят.)
я замолчу теперь.:-) Удачи!