HashMap代码(这种实现方式是错误的,错误原因:代码中_map、_length变量是HashMap的所有实例共用的):
/** * HashMap * 2021年09月09日 */ (function (global) { var _map; var _length; global.HashMap = function () { _map = {}; _length = 0; }; global.HashMap.prototype = { put: function (key, value) { if (!_map.hasOwnProperty(key)) { _length++; } _map[key] = value; }, get: function (key) { if (_map.hasOwnProperty(key)) { return _map[key]; } return null; }, containsKey: function (key) { return _map.hasOwnProperty(key); }, size: function () { return _length; }, remove: function (key) { if (_map.hasOwnProperty(key)) { _length--; return delete _map[key]; } return false; }, removeAll: function () { _map = {}; }, keys: function () { var keys = []; for (var item in _map) { keys.push(item); } return keys; }, values: function () { var values = []; for (var item in _map) { values.push(_map[item]); } return values; } }; global.HashMap.prototype.constructor = global.HashMap; })(window);