/*
* 閉包
* 定義於一個內存空間裏的函數, 這個內存空間可以是一個函數 (包括 window函數 和 匿名函數), 可以是一個變量對象
* 一個內存空間裏, 調用的變量, 保留於內存; 不被調用的, 就被銷燬
被調用閉包如果引用其外空間下的變量, 那該變量將同閉包一起保留於內存
*
* https://www.cnblogs.com/cjvae/p/9786598.html
* https://blog.csdn.net/coder_vader/article/details/78839686
*/
// 作爲一個獨立環境使用
(function () {
})();
// 封裝函數
function fun() {
return {
a: 0
b: function () {
return ++this.a;
}
}
}
console.log(fun().b()); // 1
console.log(fun().b()); // 1
// 面向對象開發
var obj = {
a: 0,
b: function () {
return ++this.a;
}
};
console.log(obj.b()); // 1
console.log(obj.b()); // 2