// 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()
高級單例模式,能夠說就是升級版的單例模式,更改了單例模式的不足,用到高級單例模式
使用這個單例的模式 是改變不了內部變量的。複製代碼