以下是樓主的見解,如有錯誤請幫忙矯正。
以下是是乙個簡單的閉包例子
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 閉包就是為了解決上述問題的,...