在研究js模块化写法的时候产生的疑问,代码如下
// 立即执行函数写法,保证外部不能访问到 count
var module1 = (function() {
var count = 0;
var m1 = function() {
return count;
};
return {
m1: m1
};
})();
// 如果现在想给 module1 添加新的方法
module1 = (function(mod) {
mod.m2 = function() {
return count;
}
return mod;
})(module1);
console.log(module1.m1());//可以访问到 count
// console.log(module1.m2());
我想知道为什么 module1.m2()
访问不到 count
?
缕一缕思路:m1之所以能访问到count,是因为m1跟count在同一个function里声明的,也就是他们在同一个作用域下,但是m2所在的function跟count可不是在同一个function作用域下的,也没有存在function嵌function的关系,自然访问不到。
题主是觉得module1本身就跟count在同一个function下,所以给module1加个方法,这个方法就跟count在同一个作用域下?