1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| 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;
|
|