我的收藏

闭包(Closure)

2019-07-18  本文已影响3人  422ccfa02512

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

闭包例子

  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;
};
上一篇下一篇

猜你喜欢

热点阅读