以下代码正在工作,但我觉得还有更好的办法。我传递了一个对高阶函数范围的引用。高阶函数参考JS
var p=this;
this.nodeModal.find(".modal-footer .save").click(function(){
p.saveAndClose();
});
有没有更简单的方法来传递高阶函数的参考?某种绑定?
以下代码正在工作,但我觉得还有更好的办法。我传递了一个对高阶函数范围的引用。高阶函数参考JS
var p=this;
this.nodeModal.find(".modal-footer .save").click(function(){
p.saveAndClose();
});
有没有更简单的方法来传递高阶函数的参考?某种绑定?
或者,如果你正在使用ES6,与箭头功能:
this.nodeModal.find(".modal-footer .save").click(() => {
this.saveAndClose();
});
您正在寻找的bind()
method:
this.saveAndClose.bind(this)
我已经绑定tryed但事与愿违工作,它会引发以下错误:TypeError:this.saveAndClose未定义。我猜是因为这个函数没有在高阶函数范围中定义。 – tul1
它的工作!你能解释一下关于箭头函数发生了什么吗?谢谢 – tul1
当然,对不起,如果我不使用手机大声笑,我会解释更多。 arrow函数是ES6的一项新功能,并且与Chrome等现代浏览器兼容,但为了在旧浏览器中使用它,需要使用Babel等编译器将代码编译为ES5代码。箭头函数在函数内部保留'this'的引用,您可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions –
上阅读更多内容。巴别尔和你一样做了同样的事情。你可以尝试编译你的代码并查看它,所以它看起来不像是一个魔法。 –