用js闭包特性实现一个缓存器

闭包这个词,不知道什么时候起成了js必须掌握的知识点。分享一个实例,一个简单的缓存器。

使用场景:需要存储一些内容,但希望内容是受保险的,只存储符合一定规则的内容,通过指定的接口访问。不会被不受控的代码修改其中的值。代码如下:

window.cache = (function(){
  var _data = [];
  return {
    add: function(name, value, force) {
      if (force || !_data[name]) {
        _data[name] = value;
        return true;
      }
      return false;
    },
    get: function(name) {
      return _data[name] || false;
    },
    del: function(name) {
      try {
        delete _data[name];
      }
      catch (e) { }
      return true;
    }
  }
})();

简单说明:_data是函数的局部变量,存在于函数中的add、get、del方法在函数执之后依然可以访问到_data,这种情况被称之为闭包。数据存储在_data这个局部变量中,add get del可以访问_data进行操作,充当外界访问的接口,与外界代码隔离。可以在add中添加过淲规则,达到对数据进行过滤的目的。外界通过 add、get、del方法来操作,可以防止某些不兼容的代码直接将变量置空或删除(这种概率较低的)。