【发布时间】:2018-04-30 12:54:13
【问题描述】:
我创建了一个小程序,用于在单击 DOM 中的按钮时在控制台中打印一些消息。
代码-
<!DOCTYPE html>
<html>
<body>
<button onClick="printName()">Click</button>
</body>
<script>
const personDetails = (function() {
let name = 'john';
function displayMsg() {
console.log(name);
}
return {
displayName: displayMsg
}
})();
function printName() {
personDetails.displayName();
}
</script>
</html>
在上面的代码中,为了保护 name,我使用 IIFE 并在 personDetails 中返回一个方法 displayName。单击按钮时,将执行 printName,进而执行 personDetails.displayName。这是我的担忧 -
- 这是使用 IIFE 保护数据的正确方法吗? 如果不是,请提供解决方案。这每天都在变得令人困惑。
- 即使我们只保留 1 个全局变量,其他暴露的 变量可以通过像 displayName 这样的全局变量来访问 方法。
-
假设我已成功保护数据,但我仍然能够 通过更改控制台中的函数定义 personDetails.displayName 应该避免。
旧方法: 函数 displayMsg() { console.log(name); }
新方法: personDetails.displayName = function() { console.log('Hiiii'); }
【问题讨论】:
标签: javascript private private-members iife