var Gadget = function() {
// static variable/property
var counter = 0;
// returning the new implementation
// of the constructor
return function() {
console.log(counter += 1);
};
}(); // execute immediately
var g1 = new Gadget(); // logs 1
var g2 = new Gadget(); // logs 2
var g3 = new Gadget(); // logs 3
我調試代碼和var counter = 0;
不會在new Gadget()
被執行,並且輸出是1,2,3
。js的直接函數的exec序列
var Gadget = function() {
// static variable/property
var counter = 0;
// returning the new implementation
// of the constructor
return function() {
console.log(counter += 1);
}();
}; // execute immediately
var g1 = new Gadget(); // logs 1
var g2 = new Gadget(); // logs 2
var g3 = new Gadget(); // logs 3
我調試代碼的var counter = 0;
將在new Gadget()
被執行,並且輸出是1,1,1
。
此演示代碼是JavaScript模式中的私有靜態成員。我理解這一點有點麻煩。
你現在的問題是什麼?爲什麼它不是在第一種情況下執行或者什麼? – 2012-04-29 07:51:17