擁抱閉包

紅寶書上對於閉包的定義:閉包是指有權訪問另一個函數做用域中的變量的函數javascript

關鍵有兩點:java

  • 是一個函數
  • 能訪問另一個函數做用域中的變量的函數
function createClosure(){
    var name = "jack";
    return {
        setStr:function(){
            name = "rose";
        },
        getStr:function(){
            return name + ":hello";
        }
    }
}
var builder = new createClosure();
builder.setStr();
console.log(builder.getStr()); //rose:hello

複製代碼

上面的函數中返回了兩個閉包,這兩個閉包都維持着對外部做用域的引用。 閉包中會將外部函數的自由對象添加到本身的做用域鏈中,因此能夠經過內部函數訪問外部函數的屬性, 這也是javascript模擬私有變量的一中方式。bash

相關文章
相關標籤/搜索