德玛西亚99
有现成的快捷键(语法糖)的功能包装@CMS回答。(下面假设您想要的上下文是this.tip.)ECMAScript 5 (当前浏览器、Node.js)和Prototype.js如果你的目标是兼容ECMA-262的浏览器,第5版(ECMAScript 5)或Node.js,你可以用Function.prototype.bind..您可以选择传递要创建的任何函数参数。部分函数.fun.bind(thisArg[, arg1[, arg2[, ...]]])同样,在您的例子中,请尝试如下:if (this.options.destroyOnHide) {
setTimeout(this.tip.destroy.bind(this.tip), 1000);}同样的功能原型实现(还有其他图书馆吗?)Function.prototype.bind可以像这样实现如果您希望自定义向后兼容(但请注意)。ECMAScript 2015 (一些浏览器、Node.js 5.0.0+)对于尖端开发(2015),您可以使用脂肪箭头函数,它们是ECMAScript 2015(和谐/ES6/ES 2015)规范的一部分 (实例).阿箭头函数表达式(亦称脂肪箭头功能)具有比函数表达式更短的语法,并且在词汇上绑定this价值[.](param1, param2, ...rest) => { statements }在您的情况下,尝试如下:if (this.options.destroyOnHide) {
setTimeout(() => { this.tip.destroy(); }, 1000);}jQuery如果您已经在使用jQuery 1.4+,那么就有一个现成的函数可以显式地设置this函数的上下文。jQuery.Proxy()*获取一个函数并返回一个始终具有特定上下文的新函数。$.proxy(function, context[, additionalArguments])在您的情况下,尝试如下:if (this.options.destroyOnHide) {
setTimeout($.proxy(this.tip.destroy, this.tip), 1000);}Underscore.js, 房客它可以在Underscore.js中获得,还可以作为_.bind(...)1,2绑定将函数绑定到对象,这意味着每当调用该函数时,this将成为目标。或者,将参数绑定到函数以预先填充它们,也称为部分应用程序。_.bind(function, object, [*arguments])在您的情况下,尝试如下:if (this.options.destroyOnHide) {
setTimeout(_.bind(this.tip.destroy, this.tip), 1000);}