美文网首页我的收藏
闭包(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;
};

相关文章

  • 关于rust中的闭包(一)

    闭包 在计算机中,闭包 Closure, 又称词法闭包 Lexical Closure 或函数闭包 functio...

  • 关于闭包

    闭包的英文是closure,又称词法闭包(Lexical Closure)和函数闭包(Function Closu...

  • 理解闭包

    闭包 何为闭包 闭包(Closure)是词法闭包(Lexical Closure)的缩写 高级程序设计中写有权访问...

  • python之闭包与装饰器

    1 闭包 维基百科给出的解析:闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭...

  • 闭包,定时器

    问题 1.什么是闭包? 有什么作用 闭包(英语:Closure),又称词法闭包(Lexical Closure)或...

  • [Code] 优雅地使用python闭包

    在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(funct...

  • golang:函数闭包

    From wiki 闭包在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure...

  • 理解Python闭包

    1.什么是闭包? 维基百科: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的...

  • Swift底层进阶--011:闭包

    什么是闭包 维基百科中的解释:在计算机科学中,闭包(Closure),又称词法闭包(Lexical Closure...

  • 闭包介绍

    闭包 关于闭包的定义: A closure is the combination of a function an...

网友评论

    本文标题:闭包(Closure)

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