javaScript閉包理解

2021-07-03 23:42:18 字數 1168 閱讀 7246

以下是樓主的見解,如有錯誤請幫忙矯正。

以下是是乙個簡單的閉包例子

function creatfunc();

}var myfunc = creatfunc();

alert(myfunc());

變數variable是乙個閉包,閉包的生命週期一般為呼叫閉包的物件為空(null)時結束。

舉乙個複雜點的例子

var singleton = function () ;

this.object.prototype.getp = function () ;

this.object.prototype.setp = function (val) ;

/* var object = ,

setp : function (val)

};*/

//return object;

};singleton();

var myobja = new object();

alert(myobja.getp());

var myobjb = new object();

myobjb.setp(11);

alert(myobja.getp());

在瀏覽器上執行的結果是10,11

上述**證明了一樣東西就是myobja和myobkb呼叫setp時所呼叫的閉包物件是同以物件,在singleton函式中建立的object物件所呼叫的p變數的作用域都是singleton物件的,所以當呼叫setp時修改的p變數都是同乙個變數,在開發的過程中比這個例子的**複雜很多,理解好閉包的作用域才能很好的使用閉包。

var singleton = function () ; this.object.prototype.getp = function () ; this.object.prototype.setp = function (val) ; /* var object = , setp : function (val) };*/ //return object; }; singleton(); var myobja = new object(); alert(myobja.getp()); var myobjb = new object(); myobjb.setp(11); alert(myobja.getp());

理解Javascript的閉包

出處 neo 內容摘抄 閉包closure就是 一些特點 例子1 閉包中區域性變數是引用而非拷貝1 2 3 4 5 6 7 8 9 10 functionsay667 num returnsayalert varsayalert say667 sayalert 因此執行結果應該彈出的667而非666...

javascript閉包理解2

今天又複習了一次閉包,參考文章在chrome開發者工具中觀察函式呼叫棧 作用域鏈與閉包,這樣在除錯中理解會更加深刻。閉包的形成需要兩個條件 1.在函式內部建立新的函式 2.新的函式在執行時,訪問了函式的變數物件 總結一下閉包 1.閉包是在函式被呼叫執行的時候才被確認建立的。2.閉包的形成,與作用域鏈...

javascript閉包的個人理解

1 在函式內部宣告變數的時候一定要用var命令。如果不用的話,實際上宣告了乙個全域性變數。2 在js中,對於變數,就是內部函式可以一直向上尋找父物件變數,內部函式可以訪問父函式定義的變數,但父函式不能訪問子函式變數。最簡單的理解就是兒子可以要父親的,父親要不了兒子的。3 閉包就是為了解決上述問題的,...