JavaScript 学习笔记 之 作用域 (六) - 模块

6.1 模块模式

模块模式需要两个必备条件

  1. 必须有外部的封闭函数,该函数必须至少被调用一次(每次调用都会创建一个新的模块实例).
  2. 封闭函数必须至少返回一个内部函数,这样内部函数才能在私有作用域中形成闭包,并且可以访问或者修改私有的状态.
function thisIsModule(){
	let msg="this is fun";
	function fun1(){
		console.log(msg+"1");
	}
	function fun2(){
		console.log(msg+"2");
	}
	return {
		fun1:fun1,
		fun2:fun2
	};
}

let test=thisIsModule();
test.fun1();//this is fun1
test.fun2();//this is fun2

console.log(thisIsModule.msg);

模块的另一个用法

模块的另一个简单而又强大的用法是命名(name)将要作为公共API的返回对象

通过在模块实例的内部保留对公共API对象的内部引用,可以从内部模块对模块实例进行修改,包括添加删除方法和属性,以及修改他们的值

function thisIsModule(name){
	let publicAPI={
		change:change,
		show:show
	}
	function change(){
		//修改公共API
		name=name.toUpperCase();
	}
	function show(){
		console.log(name);
	}
	return publicAPI;
}

let test=thisIsModule("test");
test.show();//test
test.change();
test.show();//TEST

 

猜你喜欢

转载自blog.csdn.net/Aproducer/article/details/82319501