MooTools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools跟prototypejs相类似,语法几乎一样。但它提供的功能要比prototypejs多,而且更强大。比如增加了动画特效、拖放操作等等。建议大家可以用它来代替prototypejs。
Hash的include方法是如何原Hash中不包含要包含的键,包含新的键值对。但是在使用时,当该键所对应的值是null是,该键值对会替换原来值为null的项。看下include的源码:
include: function(key, value){ if (this[key] == undefined) this[key] = value; return this; }
判断该键是否存在的方法是判断this[key]是否defined,所有当值为null时候,会设置key的值为新的value。
看下测试代码:
<script type="text/javascript"> window.addEvent("domready", function() { var myHash = new Hash({ "a": 1, "b": "b", "c": true }); show(myHash); myHash.include("a", "a"); show(myHash); }); var show = function ShowHash(myHash) { myHash.each(function(value, key) { alert("The value of key[" + key + "] is :" + value); }); } </script>
两次都是a的值都是1,说明当键存在的时候不能在include。
把myHash的“a”改为null:
<script type="text/javascript"> window.addEvent("domready", function() { var myHash = new Hash({ "a": null, "b": "b", "c": true }); show(myHash); myHash.include("a", "a"); show(myHash); }); var show = function ShowHash(myHash) { myHash.each(function(value, key) { alert("The value of key[" + key + "] is :" + value); }); } </script>
结果为:
原来的null值被改为值a。