code: function(callback) {
  
              // first check if storage define a 'keys()' function. if it does, use it
              if (typeof this._storage.keys === "function") {
                  var keys = this._storage.keys();
                  for (var i = 0; i < keys.length; ++i) {
                      callback(keys[i]);
                  }
              }
  
              // if not supported try to use object.keys
              else if (typeof Object === "function" && Object.keys) {
                  var keys = Object.keys(this._storage);
                  for (var i = 0; i < keys.length; ++i) {
                      callback(keys[i]);
                  }
              }
  
              // if not supported try to use iteration via length
              else if (this._storage.length !== undefined && typeof this._storage.key === "function") {
  
                  // first build keys array, so this function will be delete-safe (eg if callback remove keys it won't cause problems due to index change)
                  var keys = [];
                  for (var i = 0, len = this._storage.length; i < len; ++i) {
                      keys.push(this._storage.key(i));
                  }
                  // now actually iterate keys
                  for (var i = 0; i < keys.length; ++i) {
                      callback(keys[i]);
                  }
              }
  
              // if both methods above didn't work, iterate on all keys in storage class hoping for the best..
              else {
                  for (var storageKey in this._storage) {
                      callback(storageKey);
                  }
              }
          }
docs: Iterate all keys in storage class.
  @param callback: Function to call for every key, with a single param: key.