2016-04-17 106 views
0

以下代码正在工作,但我觉得还有更好的办法。我传递了一个对高阶函数范围的引用。高阶函数参考JS

var p=this; 
    this.nodeModal.find(".modal-footer .save").click(function(){ 
     p.saveAndClose(); 
    }); 

有没有更简单的方法来传递高阶函数的参考?某种绑定?

回答

2

或者,如果你正在使用ES6,与箭头功能

this.nodeModal.find(".modal-footer .save").click(() => { 
    this.saveAndClose(); 
}); 
+0

它的工作!你能解释一下关于箭头函数发生了什么吗?谢谢 – tul1

+1

当然,对不起,如果我不使用手机大声笑,我会解释更多。 arrow函数是ES6的一项新功能,并且与Chrome等现代浏览器兼容,但为了在旧浏览器中使用它,需要使用Babel等编译器将代码编译为ES5代码。箭头函数在函数内部保留'this'的引用,您可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions –

+0

上阅读更多内容。巴别尔和你一样做了同样的事情。你可以尝试编译你的代码并查看它,所以它看起来不像是一个魔法。 –

0

您正在寻找的bind() method

this.saveAndClose.bind(this) 
+0

我已经绑定tryed但事与愿违工作,它会引发以下错误:TypeError:this.saveAndClose未定义。我猜是因为这个函数没有在高阶函数范围中定义。 – tul1