云和山的彼端

江南好, 风景旧曾谙。日出江花红胜火,春来江水绿如蓝,能不忆江南。

利用hasOwnProperty实现的高效的javascript hashtable

javascript中,object的实现就是hash表,因此只要在object上封装点方法,再利用原生的hasOwnProperty方法就可以实现简单高效的hashtable

var HashTable = Class.create();
HashTable.prototype
=
{
    initialize:
function()
    {
        
this._content ={};
    },
    Count:
function()
    {
        
var count = 0;
        
for(var i in this._content) count++;
        
return count;
    },
    Items:
function(key)
    {
        
if(this.Contains(key))
        {
            
return this._content[key];
        }
    },
    Add:
function(key,value)
    {
        
if(this._content.hasOwnProperty(key)) 
        {
            
return false;
        }
        
else
        {
            
this._content[key] = value;
            
return true;
        }
    },
    Clear:
function()
    {
        
this._content  = {};
    },
    Contains:
function(key)
    {
        
return this._content.hasOwnProperty(key);
    },
    Remove:
function(key)
    {
        
delete this._content[key];
    }
}

测试如下:
Code

得出的结果是,100000大的hash表,进行1000次的判断,才花费15ms. 很快的速度了,可以用来做程序的优化.
注意: 字符串和数字相加会有糟糕的效率,导致时间多花了一倍,影响测试.

posted on 2007-11-30 01:38 jecray 阅读(351) 评论(1)  编辑 收藏 网摘 所属分类: Javascript

Feedback

#1楼  2008-08-29 11:20 Lee200811 [未注册用户]

好贴~~~~~~~~~~~~~~~~   回复  引用    



标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索
[推荐职位]上海盛大网络招聘架构师



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: