MST

星途 面试题库

面试题:JavaScript基于闭包的模块模式基础

请简述JavaScript中基于闭包的模块模式的基本结构,并且给出一个简单示例,示例中需要包含私有变量、公有方法的定义。
25.6万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

基于闭包的模块模式基本结构

  1. 立即执行函数表达式(IIFE):使用一个立即执行函数包裹模块的代码,创建一个独立的作用域,防止变量污染全局作用域。
  2. 返回一个对象:在立即执行函数内部,通过返回一个对象暴露公有方法和属性,这些公有方法和属性可以被外部访问,而函数内部定义的其他变量和函数则作为私有成员,外部无法直接访问。

简单示例

const myModule = (function () {
    // 私有变量
    let privateVariable = '这是一个私有变量';

    // 私有函数
    function privateFunction() {
        console.log('这是一个私有函数');
    }

    // 公有方法
    function publicMethod() {
        privateFunction();
        console.log(privateVariable);
        return '公有方法返回值';
    }

    return {
        publicMethod: publicMethod
    };
})();

// 调用公有方法
console.log(myModule.publicMethod()); 

在上述示例中,privateVariableprivateFunction 是私有成员,外部无法直接访问。只有通过 publicMethod 这个公有方法,间接访问到私有成员。