话不多说,直接看代码:
方法一
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 最简单的访问内部变量
var bar = (function () {
var name = 'iwen';
var foo = function () {
return name;
}
return foo;
})();
console.log(bar());
</script>
</body>
</html>
方法二
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script type="text/javascript">
//在函数内部定义一个变量,外部只能访问不能修改
var Conf = (function () {
var conf = {
NAME: 'iwen',
AGE: 18
}
return {
get: function (name) {
return conf[name] ? conf[name] : null;
}
}
})();
console.log(Conf.get('NAME'));
</script>
</body>
</html>
方法三:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script type="text/javascript">
//惰性单例
var LazySingle = (function () {
var _instance = null;
function Single() {
return {
publicMethod: function(){},
publicProperty: '1.0'
}
}
return function () {
if (!_instance) {
_instance = Single();
}
return _instance;
}
})();
console.log(LazySingle().publicProperty);
</script>
</body>
</html>