Существуют ли лучшие альтернативы следующей конструкции javascript?

#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. Я не думаю, что это «более очевидно». Это вопрос стиля.