動態產生js類的實現方法_javascript技巧

來源:互聯網
上載者:User

最近我在研究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)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> </BODY> </HTML> <SCRIPT LANGUAGE="JavaScript"> <!-- eval('function User(){var name;var age;}'); var user = new User(); user.name = 'jack'; user.age = '12'; alert('user.name : '+user.name+" user.age : "+user.age); //--> </SCRIPT>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]


<script> 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(/\<([\w\s]+)\>([^\<]+)\<\/\1\>/); while (arrtmp!=null) { str=str.replace(/\<([\w\s]+)\>[^\<]+\<\/\1\>/,""); XSA.attachVar(arrtmp[1],arrtmp[2]); arrtmp=str.match(/\<([\w\s]+)\>([^\<]+)\<\/\1\>/); } return XSA; } var test="<user><name>jack</name><age>12</age><address>beijing</address><date>2007/03/20</date></user>" var obj=analyseXml(test); alert(obj.name); alert(obj.age); alert(obj.address); alert(obj.date); </script>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

如果你要構造一個類,就用eval返回類,不要返回對象就行了.
<script> 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")); </script>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.