обобщая некоторые ответы и комментарии, здесь и в других местах.
подчеркивание
коллега указал мне на подчеркивание , часть, где я общаюсьметод к событию стал следующим:
slide: _.bind(this.onChange, this),
change: _.bind(this.onChange, this)
, который выглядит достаточно хорошо и работает, как ожидалось.
, но добавляет зависимость ...: (
jQuery
, как указал @Dennis, можно делать то же самое, оставаясь в jQuery.
slide: $.proxy(this.onChange, this),
change: $.proxy(this.onChange, this)
, что, возможно, я бы использовал, если бы не был в coffeescript. Яв любом случае, используя jQuery! но я не понимаю причину названия функции. _.bind
имеет для меня больше смысла.
coffeescript
в coffeescript используется один => оператор, практическое сокращение для того, что я искал: это всего лишь ОДНО символьное отличие от моего первоначального предположения. Его эквивалент javascript может заинтересовать тех, кто не заинтересован в coffeescript.
coffeescript
class Slider
constructor: (@itemId) ->
@slider = $('#' + @itemId).slider
value: 0
orientation: "horizontal"
change: @onChange
onChange: (event, ui) =>
###
...
###
JavaScript
var Slider;
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
Slider = (function() {
function Slider(itemId) {
this.itemId = itemId;
this.onChange = __bind(this.onChange, this);
this.slider = $('#' + this.itemId).slider({
value: 0,
orientation: "horizontal",
change: this.onChange
});
}
Slider.prototype.onChange = function(event, ui) {
/*
...
*/
};
return Slider;
})();