javascript - 给对象额外顶一个接口,如何访问对象里面的变量?
本文介绍了javascript - 给对象额外顶一个接口,如何访问对象里面的变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
getList访问不到对象里面的arr table
var mod,b=0;
(function test(a){
"use strict";
a = a||{};
var arr=[],count= 0,table={};
a.set=function(key,value,callback){
arr.push(value);
table[key]=value;
count+=value;
if(callback)callback();
};
a.urlParse=function(url){
if(!(url.indexOf("?")>=0))return;
var str=url.split("?")[1].split(/&|=/),result={};
for(var i= 0,len=str.length;i<len;i+=2){
table[str[i]]=str[i+1]-0;
result[str[i]]=str[i+1]-0;
count+=table[str[i]];
}
return result;
}
a.get=function(key){
return table[key]?table[key]:"Don't has the value of"+key;
}
a.count=function(){
return count;
}
b=a;
})(mod);
b.getList=function(){
var arrTable=[];
for(var i= 0,len=arr.length;i<len;i++){
arrTable.push(arr[i]);
}
for(var key in table){
arrTable.push(key);
}
return arrTable;
}
解决方案
<script type="text/javascript">
var mod,b=0;
(function test(a){
"use strict";
a = a||{};
var arr=[],count= 0,table={};
a.set=function(key,value,callback){
arr.push(value);
table[key]=value;
count+=value;
if(callback)callback();
};
a.urlParse=function(url){
if(!(url.indexOf("?")>=0))return;
var str=url.split("?")[1].split(/&|=/),result={};
for(var i= 0,len=str.length;i<len;i+=2){
table[str[i]]=str[i+1]-0;
result[str[i]]=str[i+1]-0;
count+=table[str[i]];
}
return result;
}
a.get=function(key){
return table[key]?table[key]:"Don't has the value of"+key;
}
a.count=function(){
return count;
}
a._arr = arr; // 把 局部 变量 arr 数组 赋值 到 a 对象 _arr 属性 里
a._table = table; // 局部 table 也 一样
b = a;
})(mod);
b.getList=function(){
var arrTable=[],
arr = this._arr,
table = this._table;
for(var i= 0,len=arr.length;i<len;i++){
arrTable.push(arr[i]);
}
for(var key in table){
arrTable.push(key);
}
return arrTable;
};
b.set('count',1); // 调用
b.set('age',25,function(){alert('调用');});
console.log(b.getList()); // [1,25,'count','age']
</script>
这篇关于javascript - 给对象额外顶一个接口,如何访问对象里面的变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文