美文网首页我的收藏
闭包(Closure)

闭包(Closure)

作者: 422ccfa02512 | 来源:发表于2019-07-18 23:22 被阅读3次

    外部函数访问函数内部变量,通过内部函数返回值为函数,在这个函数中与其父级函数建立关系,调用父级函数变量
    缺点
    外部调用函数完毕后,任然占用其内部函数,会使得内部父函数中的变量也都被保存在内存中,内存消耗很大

    闭包例子

      var name = "The Window";
    
      var object = {
        name : "My Object",
    
        getNameFunc : function(){
          return function(){
            return this.name;
          };
    
        }
    
      };
    
      alert(object.getNameFunc()()); //The Window
    
      var name = "The Window";
    
      var object = {
        name : "My Object",
    
        getNameFunc : function(){
          var that = this;
          return function(){
            return that.name;
          };
    
        }
    
      };
    
      alert(object.getNameFunc()()); //My Object
    

    不要为了闭包而闭包

    function MyObject(name, message) {
      this.name = name.toString();
      this.message = message.toString();
      this.getName = function() {
        return this.name;
      };
    
      this.getMessage = function() {
        return this.message;
      };
    }
    

    修改后

    function MyObject(name, message) {
      this.name = name.toString();
      this.message = message.toString();
    }
    MyObject.prototype.getName = function() {
      return this.name;
    };
    MyObject.prototype.getMessage = function() {
      return this.message;
    };
    

    相关文章

      网友评论

        本文标题:闭包(Closure)

        本文链接:https://www.haomeiwen.com/subject/jnhdlctx.html