#javascript #jquery #performance #coding-style
#javascript #jquery #Производительность #стиль кодирования
Вопрос:
Следующий шаблон кода — это то, как я создаю свою AJAX-систему. Меня беспокоит, когда будет добавлено больше свойств прототипа. Это может нанести удар по ремонтопригодности и эффективности.
Существуют ли лучшие альтернативные способы создания поддерживаемой и эффективной конструкции для AJAX?
function AjaxSample()
{
//bindJS() is used to bind the 'this' pointer to the scope of the function
$('#button_one').click(bindJS(this.button_oneEvent,this));
}
AjaxSample.prototype.button_oneEvent = function(event)
{
//code to handle the event
}
Комментарии:
1. Обратите внимание, что современные браузеры имеют функцию «bind()» в прототипе функции, которая выполняет именно то, что делает ваша функция «bindJS». В вашем подходе нет ничего плохого.
2. Я также принимаю во внимание, что большинство моих пользователей будут работать на IE6.
3. Что ж, @samxli, все в порядке, ваша функция «bindJS» будет отлично работать на IE6, или вы могли бы добавить ее в прототип функции, например Prototype.js библиотека выполняет.
4. о, я на самом деле не использую Prototype.js библиотека, я использую jquery.
5. Что ж, это прекрасно — в jQuery есть «$.proxy ()» (начиная с версии 1.4 или около того), который также выполняет точно то же самое.
Ответ №1:
ДА.
var self = this;
$('#button_one').click(function() {
self.button_oneEvent();
});
Используя эту технику, становится более очевидным, что происходит на самом деле.
Комментарии:
1. Я не понимаю, почему это лучше, чем то, что в вопросе. Функция «bindJS» предположительно возвращает анонимную функцию, которая в конечном итоге выполняет точно то же самое.
2. Я не думаю, что это «более очевидно». Это вопрос стиля.