核心是用IIFE创建私有作用域,通过返回对象暴露有限接口;括号确保立即执行,防止误判为函数声明;可传入依赖项实现依赖注入;利用闭包维持私有变量;支持多实例隔离与UMD兼容。
核心是用立即执行函数表达式(IIFE)创建私有作用域,把变量和函数关在里面,只通过返回的对象暴露有限接口。
函数表达式加括号后立刻执行,形成一个封闭环境,内部声明的变量、函数不会跑到全局去。这是封装的前提。
window、jQuery 或工具函数,既方便压缩,也明确外部依赖模块必须主动返回一个对象,这个对象就是外界唯一能接触到的部分。它不等于内部全部,只是精心挑选的“窗口”。
return { init() {}, getData() {} };
this 或新对象即可return { count },而应提供 getCount() 和 setCount()
在 IIFE 内部定义的变量,默认对外不可见;只有返回对象中引用的函数,才能持续访问它们——这就是闭包赋予的“特权”。
let token = null; 在外层无法读写,但 getToken() 和 setToken() 可以操作它把 jQuery、工具库等依赖作为参数传进 IIFE,而不是硬编码引用,让模块更易测试、替换和压缩。
(function($, utils) { /* 使用 $ 和 utils */ })(jQuery, myUtils);
j),减小体积