实现map & window.onload加载

之前一直是写C/S的,最近转做B/S了,记录一下自己在工作和学习中的JS小技巧,方便自己今后复习和查阅。

JS中默认只带array,有时候会需要key-value的map类功能,虽然array也支持array[key] = value的用法,但是看起来不爽,在网上找了一个map的实现,先记录下来,以后慢慢完善:

map的实现
function Map() {
    /** Map 大小 * */
    var size = 0;
    /** 对象 * */
    var entry = new Object();

    /** 存 * */
    this.put = function(key, value) {
        if (!this.containsKey(key)) {
            size++;
        }
        entry[key] = value;
    }

    /** 取 * */
    this.get = function(key) {
        if (this.containsKey(key)) {
            return entry[key];
        } else {
            return null;
        }
    }

    /** 删除 * */
    this.remove = function(key) {
        if (delete entry[key]) {
            size--;
        }
    }

    /** 删除所有 * */
    this.removeAll = function() {
        for ( var key in entry) {
            this.remove(key);
        }
    }

    /** 是否包含 Key * */
    this.containsKey = function(key) {
        return (key in entry);
    }

    /** 是否包含 Value * */
    this.containsValue = function(value) {
        for ( var prop in entry) {
            if (entry[prop] == value) {
                return true;
            }
        }
        return false;
    }

    /** 所有 Value * */
    this.values = function() {
        var values = new Array(size);
        for ( var prop in entry) {
            values.push(entry[prop]);
        }
        return values;
    }

    /** 所有 Key * */
    this.keys = function() {
        var keys = new Array(size);
        for ( var prop in entry) {
            keys.push(prop);
        }
        return keys;
    }

    /** Map Size * */
    this.size = function() {
        return size;
    }
}

另外,对于window.onLoad的实现,发现有一个小技巧需要注意,如果引用了第三方JS包,自己的window.onload可能会将其盖掉,所以最好像以下这样实现

var oldOnload = window.onload || function () {};
window.onload = function ()
{
    oldOnload();
    goSelectedYear();
}

第一行的写法是为了防止之前没有window.onload定义,后续调用时为undefined报JS错 。

 

刚发布完文章,就在网上看到一个十分简洁的map的写法,记录一下

var hashMap = {   
    Set : function(key,value){this[key] = value},   
    Get : function(key){return this[key]},   
    Contains : function(key){return this.Get(key) == null?false:true},   
    Remove : function(key){delete this[key]}   
}  

转载于:https://www.cnblogs.com/wesleyporter/archive/2012/09/29/2708105.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值