2012-04-03 23 views
0

一個XML這樣的:參考/鏈接到JavaScript對象使用XML

<?xml version="1.0"?> 
<events> 
    <event> 
     <start></start> 
     <duration></duration> 
     <begin>{somecallback}</begin> 
     <complete>{someclass.someproperty = somevalue;}</complete> 
    </event> 
</events> 
  • 我需要能夠解析XML和執行JavaScript代碼的字符串版本。我知道javascript有一個eval函數,但我需要知道eval是否可以在上面的begincomplete上執行,或者是否有更簡單的方法來執行此操作。

兩個begincomplete需要直接訪問的回調(無參數),或者直接設置的值屬於的類的屬性。我確定我可以回撥eval(),但我不確定如何繼續以這種方式直接設置屬性值。

回答

2

eval將在在範圍上對象按預期進行操作:

js> var o = {} 
js> eval('o.p = 1') 
1 
js> o.p 
1 

你應該考慮的是,如果你需要的eval你在做什麼的靈活性。 somecallback可以是對象的屬性嗎?如果是這樣,您可以撥打o[fn](),其中fn是「一些回撥」,例如。這比使用eval更安全。您的<complete>部分對我來說太含糊,建議您在第二種情況下避免使用eval