12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- var Class = require('./Class');
- var root = require('./root');
- var defineProp = require('./defineProp');
- var keys = require('./keys');
- var each = require('./each');
- var isArr = require('./isArr');
- var isUndef = require('./isUndef');
- if (root.Map && !false) {
- exports = root.Map;
- } else {
- exports = Class({
- initialize: function PseudoMap(data) {
- this.clear();
- var self = this;
- defineProp(this, 'size', {
- get: function() {
- return keys(self._data).length;
- },
- set: function() {},
- enumerable: true,
- configurable: true
- });
- if (data instanceof exports) {
- data.forEach(function(val, key) {
- this.set(key, val);
- }, this);
- } else if (isArr(data)) {
- each(
- data,
- function(val) {
- this.set(val[0], val[1]);
- },
- this
- );
- }
- },
- forEach: function(fn, ctx) {
- each(
- this._data,
- function(val, key) {
- fn.call(this, val, key);
- },
- ctx
- );
- },
- has: function(key) {
- return !isUndef(this._data[key]);
- },
- get: function(key) {
- return this._data[key];
- },
- set: function(key, val) {
- this._data[key] = val;
- },
- delete: function(key) {
- delete this._data[key];
- },
- clear: function() {
- this._data = {};
- }
- });
- }
- module.exports = exports;
|