Я занимаюсь кросс-браузерным тестированием. Изначально я использовал ключевое слово bind () в ECMAScript 5 .Это не доступно в IE8.В качестве обходного пути я использую код из Yehuda Katz.Его сайт предлагает использовать функцию полезности вместо bind (), когда bind не существует - он не существует в IE 8.
http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/
var bind = function (func, thisValue) {
return function () {
return func.apply(thisValue, arguments);
}
}
В попыткечтобы использовать его, я получаю исключение, где он говорит «func.apply».Я не передаю функцию, я передаю объект, поэтому apply () там нет.Хорошо.Но теперь я снова застрял и вернулся к квадрату 1. Как связать переменную "this" с телом функции?
Резюме: Как связать переменную "this" с телом функции?
<snip>
MyView.prototype.OnSlider_Change = function (event, ui) {
this.viewModel.setVariableX(ui.value * 100.0);
}
<snip>
$("#Slider").slider({
slide: (this.OnSlider_Change).bind(this),
change: (this.OnSlider_Change).bind(this)
});
стал
$("#Slider").slider({
slide: bind(this, this.OnSlider_Change),
change: bind(this, this.OnSlider_Change)
});