javascript - 给对象额外顶一个接口,如何访问对象里面的变量?

查看:65
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆