之前一直是写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

实现map window.onload加载相关推荐

  1. js window.onload 加载多个函数和追加函数

    平时做项目 经常需要使用window.onload, 用法如下: function func(){alert("this is window onload event!");ret ...

  2. google map结合数据库加载地图

    最近有空看了看google api,所以想着做一个结合数据库动态显示地图标记功能.前几天总算给弄出来了,先看效果图: 1.在地图上显示标记 首先得加载google的javascript. <sc ...

  3. Super Map超图IServer加载BIM及精细模型操作

    加载BIM及精细模型操作 SuperMap支持模型数据集.复合数据集生成三维切片缓存(S3M),为了优化模型在网络环境中的传输和解析,SuperMap iClient3D for WebGL(以下简称 ...

  4. uniapp中map组件动态加载marks标记

    之前在uniapp项目中用到地图都是用h5的方式实现的,比如用高德地图webapi可以不收uniapp的限制,uniapp中vue页面中map组件功能太少,nvue中css写的有蛋疼. 言归正传,ma ...

  5. android 百度map 一个layout加载多个mapview,android 百度地图API 使用Marker和InfoWindow

    前言:在android开发过程中,百度地图的使用是比较普遍的,但是如何使用,使用什么版本的百度API还是需要一些讲究. 在项目过程中,需要用到百度地图的marker和InfoWindow的功能. 标注 ...

  6. window.onload中调用函数报错的问题

    今天练习js,忽然遇到了一个问题,就是window.onload加载完成后,调用其中的函数会报错, 上一段简单的代码: 报错信息: 报错原因: 当window.onload加载完成后,第一个alert ...

  7. 如何采用离线的 Google Map API 加载离线谷歌地图的方法

    原文转自:http://www.arceyes.com/bbs/thread-18476-1-1.html 如何采用离线的 Google Map API 加载离线谷歌地图的方法 一.下载示例数据 这里 ...

  8. Three 之 three.js (webgl)基础 第二个入门案例之汽车模型加载和简单模型展示

    Three 之 three.js (webgl)基础 第二个入门案例之汽车模型加载和简单模型展示 目录 ​Three 之 three.js (webgl)基础 第二个入门案例之汽车模型加载和简单模型展 ...

  9. 不同API加载geojson

    1.mapboxgl:在底图上叠加geojson格式的矢量数据切片 <!DOCTYPE html> <html> <head><meta charset='u ...

最新文章

  1. 在 Ubuntu 上通过命令行改变 Linux 系统语言
  2. 你知道人工智能为什么这么火?
  3. SAP WM Storage Type下不允许负库存的设置
  4. [文章存档]Kudu 的 Debug Console 窗口如何查看更多文件
  5. java lock condition_Java 通过 Lock 和 竞争条件 Condition 实现生产者消费者模式
  6. 消防验收找问题,一般就是这些了!
  7. Qt中ui文件的使用
  8. jsp项目手动导出成war包
  9. 新时代ITer们的思考及购书有奖活动
  10. Android软键盘问题
  11. mysql导入hdfs参数_导入数据到HDFS
  12. python图片ocr识别手写印刷体中英文字体
  13. 当AI邂逅电能:与图知科技一起探索工业AI王座|白洞战报
  14. UWP 全屏与退出全屏
  15. RocketMQ 消息发送system busy、broker busy原因分析与解决方案
  16. OCR中文文字识别软件
  17. 一文看懂芯片后端报告
  18. Spring Security总结之如何让认证失败消息自定义在前端页面显示(一)
  19. jquery 堆栈溢出_带有jQuery和CSS3的漂亮照片堆栈库
  20. 量子计算 1 三个命题

热门文章

  1. python 倒叙 数组_打基础一定要吃透这12类 Python 内置函数
  2. dmx计算机,DMX是什么意思
  3. 开发板_Hi3516DV300核心板/开发板;Hi3516EV100+4G+AUDIO RTMP开发板;海思系列开发板/核心板定制开发...
  4. 演练-基于lamp安装wordpress--含安装包
  5. nginx利用referer指令实现防盗链配置
  6. [SPOJ375]QTREE - Query on a tree【树链剖分】
  7. Django之ORM使用以及模板语言
  8. Linear Algebra lecture6 note
  9. VisualSVN Server以及TortoiseSVN客户端的配置和使用方法
  10. 编写XML作为配置文件的高级操作库