模拟一个HashTable类,一个类上注册四个方法:包含有add、remove、contains、length方法。程序如下所示:
function HashTable() { this.value = new Array(); } HashTable.prototype.add = function(val) { this.value.push(val); } HashTable.prototype.remove = function(index) { this.value.splice(index, 1); } HashTable.prototype.contains = function(val) { var aValue = this.value; for (var i = 0; i < aValue.length; i++) { if (val == aValue[i]) { return true; } } return false; } HashTable.prototype.length = function() { return this.value.length; }
知识点:
(1)定义类需要把函数名第一个字母大写(HashTable)。
(2)This关键字指向调用者。
(3)对于对象的prototype属性的说明,JScript手册上如是说:所有 JScript 内部对象都有只读的 prototype 属性。可以向其原型中动态添加功能(属性和方法),但该对象不能被赋予不同的原型。然而,用户定义的对象可以被赋给新的原型。
(4)push() 使用方法可向数组的末尾添加一个或多个元素,并返回新的长度。
(5)Splice是数组的方法,用来增加、删除、修改数据。
splice() 使用方法向/从数组中添加/删除项目,然后返回被删除的项目。注释:该方法会改变原始数组。