注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Computer Science

I Pressed My Words Here. Will You Read ?

 
 
 

日志

 
 

javascript getStr(obj) 将入参以字符串形式返回  

2011-11-30 20:48:50|  分类: My Projects |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在编写程序时,常常需要查看程序中一些变量的内容,于是便有循环输出数组变量或对象变量的成员的需求。
根据这样的需求,为了简化操作,降低工作量。于是编写了个getStr(obj)的方法函数。在此和大家分享。
此方法,能够输出绝大多数情况下遇到的变量的结构。
当然,面对特殊需求,还会有一些功能缺陷,或者bug。如果使用时有遇到,还望能给我一个反馈。
// 将字符串 数组 对象 以字符串的形式返回。
function getStr(obj) {
    var str = '';
    var typeValue = typeOf(obj);
    switch (typeValue) {
        case 'String':
            return '"' + String(obj) + '"';
            break;
        case 'Array':
            var length = obj.length;
            str = str + '[';
            while (length > 0) {
                length--;
                str = str + getStr(obj[length]) + ',';
            }
            var lio = str.lastIndexOf(',');
            lio = lio == -1 ? str.length : lio;
            return str.substring(0, lio) + ']';
            break;
        case 'Object':
            str = str + '{';
            for ( var prop in obj) {
                str = str + prop + ':' + getStr(obj[prop]) + ',';
            }
            var lio = str.lastIndexOf(',');
            lio = lio == -1 ? str.length : lio;
            return str.substring(0, lio) + '}';
            break;
        case 'Number':
            return str + obj;
            break;
        case 'Function':
            return str + String(obj);
            break;
        case 'Boolean':
            return str + String(obj);
            break;
        default:
            break;
    }
    void function() {// 旧版逻辑 仅供参考
        if (typeOf(obj, 'String')) {
            return obj;
        } else if (typeOf(obj, 'Array')) {
            var length = obj.length;
            str = str + '[';
            while (length > 0) {
                length--;
                str = str + getStr(obj[length]) + ',';
            }
            str = str.substring(0, str.lastIndexOf(',')) + ']';
        } else if (typeOf(obj, 'Object')) {
            str = str + '{';
            for ( var prop in obj) {
                str = str + prop + ':' + getStr(obj[prop]) + ',';
            }
            str = str.substring(0, str.lastIndexOf(',')) + '}';
        } else if (typeOf(obj, 'Number')) {
            str = str + obj;
        } else if (typeOf(obj, 'function')) {
            str = str + String(obj);
        } else if (typeOf(obj, 'boolean')) {
            str = str + String(obj);
        }
    };
    return str;
}


希望对大家有帮助。如果在使用中发现任何问题,还希望能给我一个反馈,谢谢。
PS: 代码中用到了typeOf()方法,是我写的另外一个方法。有兴趣的可以在另外一篇文章中找到。
---------------
参考:
Array.toString() : http://www.w3school.com.cn/js/jsref_toString_array.asp
String.toString(): www.w3school.com.cn/js/jsref_toString_string.asp
Boolean.toString(): www.w3school.com.cn/js/jsref_toString_boolean.asp
Number.toString(): www.w3school.com.cn/js/jsref_tostring_number.asp
Date.toString(): www.w3school.com.cn/js/jsref_toString_date.asp
  评论这张
 
阅读(1025)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017