gpt4 book ai didi

javascript - 如何在 IE-8 Javascript 的函数体中绑定(bind) "this"?

转载 作者:行者123 更新时间:2023-12-02 07:07:34 25 4
gpt4 key购买 nike

我正在做一些跨浏览器测试。 Initially, I was using the bind() keyword in 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() 不存在。美好的。但现在我再次陷入困境,回到方 block 1。如何将“this”变量绑定(bind)到函数体?

总结:如何将“this”变量绑定(bind)到函数体?

<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)
});

最佳答案

通过 jquery,您可以使用 proxy method实现您的绑定(bind)方法正在执行的操作。

$("#Slider").slider({
slide: $.proxy(this.OnSlider_Change, this),
change: $.proxy(this.OnSlider_Change, this)
});

关于javascript - 如何在 IE-8 Javascript 的函数体中绑定(bind) "this"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com