CoffeeScript閉包

2018-08-25 11:50 更新

在js中,普遍會使用閉包實現(xiàn)各種事件的handler或封裝模塊,以下是CoffeeScript對這一普遍模式的實現(xiàn)


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


console.log(closure()) #=> "foo"
do關(guān)鍵詞可以產(chǎn)生一個Immediate Function,下面是對應(yīng)js代碼


  var closure;


  closure = (function() {
    var _private;
    _private = "foo";
    return function() {
      return _private;
    };
  })();
閉包中經(jīng)常需要綁定this的值給閉包的私有變量,CoffeeScript使用特殊的=>語法省去了這個麻煩


@clickHandler = -> alert "clicked"
element.addEventListener "click", (e) => @clickHandler(e)
使用=>生成函數(shù),可以看到生成代碼中會加上對this的綁定


var _this = this;


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


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


這里CoffeeScript對于this有簡單的別名@

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號