單例模式 和 高級單例模式

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