动态生成js类的实现方法
最近我在研究ajax的问题,我可以在服务器端生成一个xml文档返回给前台
由前台xmlHttp.responseXML获得xml文档
假如我生成的xml文档是如下的
<user>
<name>jack</name>
<age>12</age>
<address>beijing</address>
<date>2007/03/20</date>
</user>
前台得到了这个文档后能否动态地生成一个类呢?这个类的代码如下
function User(){
var name;
var age;
var address;
var date;
}
并且将xml文档的数据对应地保存进User对象,各位js的高手有没有办法实现这个呢?
1. jsObject.text=xxx
2. eval(xxx)
New Document
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
var xmlStringAgent=function()
{
this.attachVar=function(name,value)
{
eval("this."+name+"=\""+value+"\"")
}
}
function analyseXml(str)
{
var innerStr;
var XSA=new xmlStringAgent();
str=str.replace(/^\s+/,'');
str=str.replace(/\s+$/,'');
var arrtmp=str.match(/\([^\/);
while (arrtmp!=null)
{
str=str.replace(/\[^\/,"");
XSA.attachVar(arrtmp[1],arrtmp[2]);
arrtmp=str.match(/\([^\/);
}
return XSA;
}
var test="jack12
2007/03/20"
var obj=analyseXml(test);
alert(obj.name);
alert(obj.age);
alert(obj.address);
alert(obj.date);
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
如果你要构造一个类,就用eval返回类,不要返回对象就行了.
var func = new Function("arg1", "arg2", "this.Name=arg1;this.Age=arg2;");
var ins = new func("test", 23);
alert([ins.Name, ins.Age].join("\r\n"));
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]