function ObjectWarpper(initiallyObject){
var obj = {};
var index = 0;
this.extend = function(objs){
for(var val in objs){
if(!this.isContainKey(val)){
index++;
}
obj[val] = objs[val];
}
return this;
}
this.set = function(key,value){
if(typeof(key) === 'string'){
obj[key] = value;
index++;
}else if(typeof(key) === 'object'){
this.extend(key);
}
}
this.isContainKey = function(key){
return typeof(obj[key]) !== 'undefined';
}
this.get = function(key){
if(typeof(obj[key]) !== 'undefined'){
return obj[key];
}
return null;
}
this.size = function(){
return index;
}
this.remove = function(key){
var temp = this.get(key);
if(temp != null){
delete obj[key];
index--;
}
return temp;
}
this.loop = function(callback,deep){
if(this.size() == 0){
return;
}
if(typeof(callback) !== 'function' || typeof(callback) === 'undefined'){
callback = function(key,value){};
}
if(typeof(deep) === 'undefined' || typeof(deep) !== 'number'){
deep = 1;
}
if(deep <= 0){
return;
}
deep--;
for(var val in obj){
if(deep > 0 && obj[val] instanceof ObjectWarpper){
obj[val].loop(callback,deep);
}else{
callback(val,obj[val]);
}
}
}
this.getObj = function(){
return obj;
}
if(typeof initiallyObject === 'object'){
this.extend(initiallyObject);
}
}
var test3 = new ObjectWarpper({'4v10':'我是第四层'});
var test2 = new ObjectWarpper();
test2.set({'3v7':'adssdfssfsd','3v11':test3});
var test1 = new ObjectWarpper();
test1.set({'3v6':'第三层内容'});
var test = new ObjectWarpper({'2v4':'递归内容','2v5':test1,'2v9':'我是第二层v9','2v8':test2});
test.set('append','后来添加');
var wo = new ObjectWarpper({'1v1':'sdfsfs','1v2':1231312,'1v3':test});
wo.loop(function(key,value){
alert('key:'+key+" value:"+value);
},3);