// var name = '小明';
// var age = 10;
// var sex = '男';
// 单例模式,其实就是一个对象,我们把这个对象称为 命名空间
var per1 = {
name:'小明',
age:10,
sex:'男',
eat:function(){
console.log(`${this.name}吃饭`)
}
}
var per2 = {
name:'小明1',
age:12,
sex:'女'
}
per1.eat();
var f = per1.eat;
f();
var tools = {
f1:function(){
},
f2:function(){
},
f3(){
console.log(666)
}
};
tools.f3();
```
普通单例,是没有私有的内容,别的人员可以任意更改你的内部属性
高级单例模式
var utils = function(){
var name = '小明';
var sex = '男';
var age = 10;
var eat = function(){
console.log(`${name}吃饭`)
}
return{
name,sex,age,eat
}
}
var per3 = utils(); // per3 仍然是个普通对象
per1.name = '小红'
per1.eat = function(){
console.log('吃水果')
}
per1.eat(); // 普通单例,是没有私有的内容,别的人员可以任意更改你的内部属性
per3.name = '小红'; //只是修改了per3这个对象中的name属性,utils中的内部变量没有改变
var per4 = utils();
console.log(per3.name,per4.name)
//console.log(per3.name,per1.name)
// per1 的name属性 用的人能否更改???
// per3 的name属性 用的人能否更改???
// 都是可以更改的,但是per3中name对应的变量是修改不了的;
// 用的人每次都会重新执行该高级单例,每次获取的都是初始值
</script>
<script src="./utils.js"></script>
<script>
var myU1 = utils();
myU1.a = 100;
console.log(myU1.a)
myU1.fn()
高级单例模式,可以说就是升级版的单例模式,更改了单例模式的不足,用到高级单例模式
使用这个单例的模式 是改变不了内部变量的。