面试题答案
一键面试基于闭包的模块模式基本结构
- 立即执行函数表达式(IIFE):使用一个立即执行函数包裹模块的代码,创建一个独立的作用域,防止变量污染全局作用域。
- 返回一个对象:在立即执行函数内部,通过返回一个对象暴露公有方法和属性,这些公有方法和属性可以被外部访问,而函数内部定义的其他变量和函数则作为私有成员,外部无法直接访问。
简单示例
const myModule = (function () {
// 私有变量
let privateVariable = '这是一个私有变量';
// 私有函数
function privateFunction() {
console.log('这是一个私有函数');
}
// 公有方法
function publicMethod() {
privateFunction();
console.log(privateVariable);
return '公有方法返回值';
}
return {
publicMethod: publicMethod
};
})();
// 调用公有方法
console.log(myModule.publicMethod());
在上述示例中,privateVariable
和 privateFunction
是私有成员,外部无法直接访问。只有通过 publicMethod
这个公有方法,间接访问到私有成员。