JavaScript中几乎每个对象都有一个toString()方法,而且是内置的.用来输出当前
变量的信息.但是对于我们最常用的Object对象.每次用toString都是打印[objectObject]
{a:1,b:2,c:3}.toString()===>[objectObject]
让人十分郁闷,为此我实现了一个友好的,打印Object各成员的函数,
支持嵌套输出,也能友好打印数组内容.
这里贴出代码,希望和大家一起学习,一起完善,改进这个函数.
说句题外话,用Vim写程序,可不是一般的爽啊.
我表达能力有限,只能用"爱不释手"来表达我对Vim的爱
http://www.vim.org/
/* vi:set tw=0 ts=4 sw=4 noet nowrap ft=javascript fdm=syntax ai: */ /* Date对象输出为字符, 返回类似: "2002年2月1日 1:01:01" 的格式 part: 0:(默认)返回日期和时间 1:只返回日期 2:只返回时间 sp: undefined :(默认)返回 "2002-2-1 1:01:01" 非undefined: 返回 "2002年2月1日 1:01:01" */ Date.prototype.tos=function(part,sp){ var hash={"0":"","1":"Date","2":"Time"} , ret , part=part || 0; //因为 toLocaleString的输出完全处决于客户机操作系统的设置,所以我们要先测试一下 if ((new Date(2000,1,1,1,1,1)).toLocaleString()=="2000年2月1日 1:01:01"){ ret=String(this["toLocale"+hash[part]+"String"]()); }else{ //不是我们想要的格式,只能自己实现 var yyyy=this.getFullYear(); var nn=this.getMonth()+1; var dd=this.getDate(); var hh=this.getHours(); var mm=String("00"+this.getMinutes()).right(2); var ss=String("00"+this.getSeconds()).right(2); var dateString=yyyy+"年"+nn+"月"+dd+"日"; var timeString=hh+":"+mm+":"+ss; hash={"0":dateString+" "+timeString,"1":dateString,"2":timeString}; ret= hash[part]; } return sp==undefined?ret.replace(/[年月]+/g,"-").replace("日",""):ret; } RegExp.prototype.tos=function(){ return this.toString(); } Number.prototype.tos=function(){ return this.toString(); } String.prototype.tos=function(){ if (this.indexOf("'")!=-1){ return '"'+this.replace(/"/g,'"')+'"'; }else{ return "'"+this.replace(/'/g,"'")+"'"; } } /* "".left 和 "".right 模拟实现 vbs里面的 left和right函数,截取字符串 不过这里的实现支持中文 ,会把一个汉字当两个字符来计算。 */ String.prototype.right=function(n){ return this.slice(this.slice(-n).replace(/[x00-xff]/g,"").length-n); } String.prototype.left=function(n){ // alert("abcdefg".left(3)==="abc");alert("中国人cdefg".left(5)==="中国"); //alert("中国abcdefg".left(5)==="中国a") return this.slice(0,n-this.slice(0,n).replace(/[x00-xff]/g,"").length); } //列出函数名和参数列表,内容用替代 Function.prototype.tos=function(){ var ret=this.toString(); return ret.left(ret.indexOf(")"))+"){}"; } Array.prototype.tos=function(){ for(var i=0,arr=[];i
【一个友好的.改善的 Object.prototype.toString的实现】相关文章:
★ 自动设为主页
★ 如何制作浮动广告
★ 链接渐变效果