要不将本地模块暴露给JavaScript的条件,可以使用以下解决方法:
var module = (function() {
var privateVariable = "I am private";
function privateFunction() {
console.log("This is a private function");
}
function publicFunction() {
console.log("This is a public function");
}
return {
publicFunction: publicFunction
};
})();
module.publicFunction(); // 输出:"This is a public function"
module.privateVariable; // undefined
module.privateFunction(); // 报错:module.privateFunction is not a function
export
关键字来明确指定需要暴露的变量和函数,并使用import
关键字来引入模块。// module.js
const privateVariable = "I am private";
function privateFunction() {
console.log("This is a private function");
}
export function publicFunction() {
console.log("This is a public function");
}
// main.js
import { publicFunction } from './module.js';
publicFunction(); // 输出:"This is a public function"
privateVariable; // 报错:privateVariable is not defined
privateFunction(); // 报错:privateFunction is not defined
var module = {
privateVariable: "I am private",
privateFunction: function() {
console.log("This is a private function");
},
publicFunction: function() {
console.log("This is a public function");
}
};
module.publicFunction(); // 输出:"This is a public function"
module.privateVariable; // 输出:"I am private"
module.privateFunction(); // 输出:"This is a private function"
无论使用哪种方法,都可以控制模块的可见性,避免直接访问模块的私有成员。