JavaScript學習筆記(四)

2021-07-03 03:40:39 字數 1087 閱讀 1933

匿名函式與閉包

匿名函式

所謂匿名函式就是沒有名字的函式,即建立乙個沒有名字的函式物件,可以將這個函式物件賦給乙個var,或者作為引數傳遞,作為函式返回值等等。

var fcn = function() ;
閉包所謂閉包就是在函式中定義的函式,這個函式一般用來做返回值(即用乙個函式來生產函式)。那麼返回的這個內部函式就是閉包了。如:

function createcmpfcn(propertyname) {

return function(obj1,obj2) {

var value1 = obj1[propertyname];

var value2 = obj2[propertyname];

if(value1閉包並不會,因為閉包被返回了,所以雖然它的外部函式createcmpfcn結束了,但是內部函式閉包fcn還存在,因此對外部函式的作用域節點的引用還存在,fcn的作用域鏈被初始化為createcmpfcn--->window,因此閉包中可以訪問已經結束的外部函式的活動物件。

如圖可以看到,每個函式有個scope屬性,指向該函式的作用域鏈,這個作用域鏈最下端為自身。在函式自身未被呼叫的情況下,這個鏈中是沒有自身的。它最初被初始化為其定義處的作用域鏈,然後呼叫時再根據所處的位置壓入一些作用域,最後壓入自身的作用域。所以閉包的作用域中總是有其外部函式的。另外,乙個外部函式中定義的多個閉包,引用的是同乙個外部函式作用域,因此是共享同一套外部函式活動物件的。

JavaScript學習要點(四)

function hasprototypeproperty object,name 用來判斷是否是原型中的變數 先前建立的例項,修改原型後,例項能馬上得到原型方法,但重寫整個原型後,例項中的指標指向的卻還仍然是先前的原型 我們可以通過給原生物件的原型新增方法來對原生物件進行拓展 string.pro...

Javascript 學習筆記

如果在生成的html裡面有事件需要傳遞帶特殊字元的引數,處理如下 singletext 輸入 1.singletext value.escapehtml 為 將html編碼 2.singletext value.escapehtml inspect 為 3.在 jsdebugtext innerht...

javascript學習筆記

視窗操作 1改變視窗的位置 window.location 2視窗的歷史操作 previous 3建立新的視窗 window.open url 視窗名稱 視窗特徵字元 細節 不能換行寫 視窗特徵 width,height,yes,no munubar,status,scrollbars,resiza...