Hashtable ist eine der am häufigsten verwendeten Datenstrukturen, es gibt jedoch keine verschiedenen Datenstrukturobjekte in JavaScript. Wir können jedoch einige Funktionen dynamischer Sprachen verwenden, um einige häufig verwendete Datenstrukturen und Operationen zu implementieren, wodurch einige komplexe Codelogik klarer werden und dem von der objektorientierten Programmierung befürworteten Kapselungsprinzip besser entsprechen können. Dies ist eigentlich die Verwendung von JavaScriptObject-Objekten, die dynamisch Attribute hinzufügen können, um Hashtable zu implementieren. Hier muss erklärt werden, dass JavaScript alle Attribute in Object über die for-Anweisung durchlaufen kann. Aber diese Methode sollte im Allgemeinen vermieden werden, es sei denn, Sie wissen wirklich, was in Ihrem Objekt enthalten ist.
<script type="text/javascript"> function Hashtable() { this._hashValue= new Object(); this._iCount= 0; } Hashtable.prototype.add = function(strKey, value) { if(typeof (strKey) == "string"){ this._hashValue[strKey]= typeof (value) != "undefined"? value : null; this._iCount++; returntrue; } else throw"hash key not allow null!"; } Hashtable.prototype.get = function (key) { if (typeof (key)== "string" && this._hashValue[key] != typeof('undefined')) { returnthis._hashValue[key]; } if(typeof (key) == "number") returnthis._getCellByIndex(key); else throw"hash value not allow null!"; returnnull; } Hashtable.prototype.contain = function(key) { returnthis.get(key) != null; } Hashtable.prototype.findKey = function(iIndex) { if(typeof (iIndex) == "number") returnthis._getCellByIndex(iIndex, false); else throw"find key parameter must be a number!"; } Hashtable.prototype.count = function () { returnthis._iCount; } Hashtable.prototype._getCellByIndex = function(iIndex, bIsGetValue) { vari = 0; if(bIsGetValue == null) bIsGetValue = true; for(var key in this._hashValue) { if(i == iIndex) { returnbIsGetValue ? this._hashValue[key] : key; } i++; } returnnull; } Hashtable.prototype.remove = function(key) { for(var strKey in this._hashValue) { if(key == strKey) { deletethis._hashValue[key]; this._iCount--; } } } Hashtable.prototype.clear = function () { for (var key in this._hashValue) { delete this._hashValue[key]; } this._iCount = 0; } </script>
StringCollection/ArrayList/Stack/Queue usw. können alle diese Idee nutzen, um JavaScript zu erweitern.