前两天看到MooTools的新版本有一个新东西——Hash,说是依照Dean Edwards的第二条军规加入的。左思右想觉得有点奇怪,写一个javascript lib怎么可能去实现一个hash算法呢?今天好奇的看了一下代码,orz…也难怪blog上的Eric Rogé大哥会有那样的疑问。对此疑问之后有两个解释,第一个还算合情合理,第二个就有问题了,而且口气也很霸道啊,这个Hash只是封装了一个Object,但是Dean所说的问题仍然存在:

Object.prototype.aaa = function(){};
var hash = new Hash({});
hash.length;    //==1
hash.hasKey("aaa");    //true
//or let's put it this way...
var hash = new Hash({});
Object.prototype.aaa = function(){};
hash.length;    //==0, length may only increase when Hash.set is invoked
hash.hasKey("aaa");    //true

所以呢,问题好像还是没解决,任何时候Object.prototype被践踏了都会影响Hash的正确性。


历史评论

Joeey
Joeey (2007-11-23)
………..无人评论,看来没有人觉得有意思= =b
twenty
twenty (2007-11-24)
楼上盗版。。。。。哭诉啊
pizza
pizza (2007-11-24)
@引用楼上盗版。。。。。哭诉啊 支持你讨要版权费 :mrgreen: