CoffeeScript闭包

2018-08-25 11:50 更新

在js中,普遍会使用闭包实现各种事件的handler或封装模块,以下是CoffeeScript对这一普遍模式的实现


closure = do ->
  _private = "foo"
  -> _private


console.log(closure()) #=> "foo"
do关键词可以产生一个Immediate Function,下面是对应js代码


  var closure;


  closure = (function() {
    var _private;
    _private = "foo";
    return function() {
      return _private;
    };
  })();
闭包中经常需要绑定this的值给闭包的私有变量,CoffeeScript使用特殊的=>语法省去了这个麻烦


@clickHandler = -> alert "clicked"
element.addEventListener "click", (e) => @clickHandler(e)
使用=>生成函数,可以看到生成代码中会加上对this的绑定


var _this = this;


this.clickHandler = function() {
  return alert("clicked");
};


element.addEventListener("click", function(e) {
  return _this.clickHandler(e);
});


这里CoffeeScript对于this有简单的别名@

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号