使用Object模拟Java的Map

每一个对象在new之前都会调用一个function,我们可以调用对象的constructor属性来看构造函数
如object的function为:
function Object(){
//native code;
}
数组对象的function为:
function Array(){
//native code;
}
有了以上的基础之后,那么我们明白,模拟Java的map类应该这样构造
var m = new Map();
可是,map这个对象从何而来,对,我们必须封装一个function供map调用。下面我们从对象到方法一步步的开始模拟Java的Map
1、构造Map函数
function Map(){
var obj = {};//空的对象容器,用来盛放键值对
}
简单吧,至此,Map的函数已经封装好了。
2、添加put方法
我们知道,map类是有put方法的,那么我们在js中需要封装put方法,具体的步骤如下
function Map(){
var obj = {};
//添加put方法
this.put = function(key,value){
obj[key] = value;
}
}
var m = new Map();
m.put("1","zhang");
m.put("2","wang");
m.put("3","li");
3、添加size方法
function Map(){
var obj = {};
//添加put方法
this.put = function(key,value){
obj[key] = value;
}
this.size = function(key,value){
var count = 0;
for(var attr in obj){
count++;
}
return count;
}
}
4、添加get方法
this.get = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
return obj[key];
}else{
return null;
}
}
5、添加remove方法
this.remove = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
delete obj[key];
}
}
6、添加遍历方法
this.eachMap = function(fn){
for(var attr in obj){
fn(attr,obj[attr]);
}
}
7、最后总的代码如下:
<html>
<head>
<script type="text/javascript">
function Map(){
var obj = {};
//添加put方法
this.put = function(key,value){
obj[key] = value;
}
this.size = function(){
var count = 0;
for(var attr in obj){
count++;
}
return count;
}
this.get = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
return obj[key];
}else{
return null;
}
}
this.remove = function(key){
if(obj[key] || obj[key] === 0 || obj[key] === false){
delete obj[key];
}
}
this.eachMap = function(fn){
for(var attr in obj){
fn(attr,obj[attr]);
}
}
}
var m = new Map();
m.put("1","zhang");
m.put("2","wang");
m.put("3","li");
//m.remove("3");
//alert(m.get("3"));
m.eachMap(function(key,value){
alert(key+":"+value);
});
</script>
</head>
<body>
</body>
</html>
好了,到此,一个map对象就做完了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值