zoukankan      html  css  js  c++  java
  • 1)Javascript设计模式:Module模式

    最简单的创建对象方法

    
    function User(name) {
        this.name = name || ''
    }
    
    User.prototype.say = function() {
        console.log('Hi, My name is ' + this.name);
    }
    
    var u = new User('tom')
    

    缺点:此种方法无法实现私有成员变量的隐藏

    私有模式

    var User = (function() {
        var sayCount = 0;
        var _say = function() {
            sayCount ++;
        }
        
        return {
            say: function() {
                _say()
                console.log('')
            }
        }
    })();
    
    var User = (function() {
        var sayCount = 0;
        var _say = function() {
            sayCount ++;
        }
        
        return {
            say: function() {
                _say()
                console.log('')
            },
    
            run: function() {
                // 可以调用say方法吗?
                // this.say(); 好像不可以,这里的this是context window对象。
                // 这种模式是有缺点的,无法在这里调用say方法,只能这样User.say()
    
                // 如果私有方法出了bug,由于无法从外部打补丁,也无法对私有方法进行扩展
            }
        }
    })();
    
    // Revealing Module
    var User = (function() {
        var sayCount = 0;
        var _say = function() {
            sayCount ++;
        }
        
        function publicSay() {
          _say()
          console.log('')
          publicRun()
        }
    
        function publicRun() {
        
        }
        
        return {
            say: publicSay,
            run: publicRun
        }
    })();
    
  • 相关阅读:
    6.25作业
    博客园第一篇
    532. 数组中的K-diff数对
    echarts
    跨域问题
    数组中第三大的数 leetcode 414
    除自身以外数组的乘积leetcode 238
    xshell工具
    插入、删除和随机查询时间复杂度都为O(1) leetcode 381
    组合总和3 leetcode 216
  • 原文地址:https://www.cnblogs.com/human/p/5078495.html
Copyright © 2011-2022 走看看