首先要感谢ys8616270这位朋友,他提供了一个很好的方法,但用这个方法做测试的时候出现了问题,所以想请大家指点一下。
贴上我的代码: <script type="text/javascript">
//在JavaScript里面自定义一个类
function User(name,age){
this.name=name;
this.age=age;
this.canFly=false;
}
var u = new User("abc",22);
alert(typeof(u));
var jsonstr = Serialize(new User("def",22));
alert (jsonstr);
function Serialize(obj){
switch(obj.constructor){
case Object:
var str = "{";
for(var o in obj){
str += o + ":" + Serialize(obj[o]) +",";
}
if(str.substr(str.length-1) == ",")
str = str.substr(0,str.length -1);
return str + "}";
break;
case Array:
var str = "[";
for(var o in obj){
str += Serialize(obj[o]) +",";
}
if(str.substr(str.length-1) == ",")
str = str.substr(0,str.length -1);
return str + "]";
break;
case Boolean:
return "\"" + obj.toString() + "\"";
break;
case Date:
return "\"" + obj.toString() + "\"";
break;
case Function:
break;
case Number:
return "\"" + obj.toString() + "\"";
break;
case String:
return "\"" + obj.toString() + "\"";
break;
}
}
</script>这里第一次弹出的是object,第二次弹出的是undefined,可我觉得代码看上去没问题,这是什么原因?希望了解JavaScript知识的朋友帮助指点一下。
谢谢大家乐,^_^
贴上我的代码: <script type="text/javascript">
//在JavaScript里面自定义一个类
function User(name,age){
this.name=name;
this.age=age;
this.canFly=false;
}
var u = new User("abc",22);
alert(typeof(u));
var jsonstr = Serialize(new User("def",22));
alert (jsonstr);
function Serialize(obj){
switch(obj.constructor){
case Object:
var str = "{";
for(var o in obj){
str += o + ":" + Serialize(obj[o]) +",";
}
if(str.substr(str.length-1) == ",")
str = str.substr(0,str.length -1);
return str + "}";
break;
case Array:
var str = "[";
for(var o in obj){
str += Serialize(obj[o]) +",";
}
if(str.substr(str.length-1) == ",")
str = str.substr(0,str.length -1);
return str + "]";
break;
case Boolean:
return "\"" + obj.toString() + "\"";
break;
case Date:
return "\"" + obj.toString() + "\"";
break;
case Function:
break;
case Number:
return "\"" + obj.toString() + "\"";
break;
case String:
return "\"" + obj.toString() + "\"";
break;
}
}
</script>这里第一次弹出的是object,第二次弹出的是undefined,可我觉得代码看上去没问题,这是什么原因?希望了解JavaScript知识的朋友帮助指点一下。
谢谢大家乐,^_^
杯具了原来还会显示一个undefined的;一改就神马显示都没有了。
function User(name,age){
this.name=name;
this.age=age;
this.canFly=false;
}
按你的思路估计不行,稍等,我帮你写个
js里switch非整形也是可以的
this.name=name;
this.age=age;
this.canFly=false;
this.obj={a:{c:1,d:new Date()},b:2};
this.fun=function(){alert('ok');};
this.date=new Date();
this.undef=undefined;
this.nul=null;
}
var u = new User("abc",22);
var jsonstr = Serialize(new User("def",22));
alert (jsonstr); function Serialize(obj){
var str='{';
for(var o in obj){
if(typeof(obj[o])!='object'){
str+=o.toString()+':'+obj[o]+',';
}
else if(obj[o]!=null && obj[o].toString()=='[object Object]'){
str+=o.toString()+':'+Serialize(obj[o])+',';
}
else if(obj[o]!=null){
str+=o.toString()+':'+obj[o].toString()+',';
}
else if(obj[o]==null){
str+=o.toString()+':'+obj[o]+',';
}
}
if(str.length>1) str=str.substr(0,str.length -1);
str+='}';
return str;
}