Mootools:Hash中的null值

         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。
   image 

      

     把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>
    
    结果为:
    image image 
    
    原来的null值被改为值a。
 
    

你可能感兴趣的:(mootools)