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
        }
    })();
    
  • 相关阅读:
    python 函数2
    python 函数
    python 中string格式化
    python中的集合
    值&&引用传递&&序列化
    线程&&进程
    c#委托
    .net框架介绍
    类的定义
    ef中关于数据库中int为null问题
  • 原文地址:https://www.cnblogs.com/human/p/5078495.html
Copyright © 2011-2022 走看看