閉包的用途

2021-09-08 13:49:30 字數 1642 閱讀 8532

1、匿名自執行函式

每次使用變數都是用var關鍵字外,我們在實際情況下經常遇到這樣一種情況,即有的函式只需要執行一次,其內部變數無需維護,

比如ui的初始化,那麼我們可以使用閉包:

var data=     

};

(function(dm)

}

})(data);

2、結果快取

我們開發中會碰到很多情況,設想我們有乙個處理過程很耗時的函式物件,每次呼叫都會花費很長時間,

那麼我們就需要將計算出來的值儲存起來,當呼叫這個函式的時候,首先在快取中查詢,如果找不到,則進行計算,然後更新快取並返回值,如果找到了,直接返回查詢到的值即可。閉包正是可以做到這一點,因為它不會釋放外部的引用,從而函式內部的值可以得以保留。

var cachedsearchbox = (function(),    

count = ;

return

var fsb = new uikit.webctrl.searchbox(dsid);//新建

cache[dsid] = fsb;//更新快取

if(count.length > 100)

return fsb;

},

clearsearchbox : function(dsid)

}

};

})();

cachedsearchbox.attachsearchbox("input");

3、封裝

var person = function(),    

setname : function(newname)

}

}();

print(person.name);//直接訪問,結果為undefined

print(person.getname());

person.setname("abruzzi");

print(person.getname());

得到結果如下:

undefined

default

abruzzi

4、實現類和繼承

function person(),    

setname : function(newname)

}

};

var p = new person();

p.setname("tom");

alert(p.getname());

var jack = function(){};

//繼承自person

jack.prototype = new person();

//新增私有方法

jack.prototype.say = function();

var j = new jack();

j.setname("jack");

j.say();

alert(j.getname());

閉包 Python中的閉包

通俗地講就是別人家有某個東西,你想拿到但是因為許可權不夠 不打死你才怪 但是你可以跟家裡的孩子套近乎,通過他拿到!這個家就是區域性作用域,外部無法訪問內部變數,孩子是從家裡返回物件,對家裡的東西有訪問許可權,借助返回物件間接訪問內部變數!def outer 別人家 x 10 別人家裡的東西 def ...

閉包 解決閉包問題

1 函式和對其周圍狀態 lexical environment,詞法環境 的引用 在一起構成閉包 closure 2 函式與函式所依賴的上下文環境組成閉包問題。3 閉包指的是 能夠訪問另乙個函式作用域的變數的函式。清晰的講 閉包就是乙個函式,這個函式能夠訪問其他函式的作用域中的變數。var arr ...

python 閉包 python 閉包

閉包 因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。閉包的特點 是個巢狀函式 可以獲得非區域性的變數 將函式當作物件返回 看乙個例子會更易理解 def make printer msg msg hi there def printer ...