2017-06-15 59 views
2

是否有任何替代解決方案來創建從字符串var的js函數,除了eval()Function constructor 我不允許使用這兩種方法出於安全原因。從字符串創建js函數沒有eval和新功能()

我知道使用js代碼創建DOM元素並添加到頁面時的解決方案,但這絕對是骯髒的破解。 非常感謝您的幫助。

====

ADD

我接收JSON數據中包含 「一個=== B」, 「!一」,「(一個& & b)中字符串||Ç 「等等......(數百個組合)。需要創建和返回可以做這個比較功能的功能。

東西

var test = function ('a === b') { 
    //some code without eval and new Function() 
} 
// in console 
test('aa', 'bb') // return false 
+1

如果你有訪問文件系統,然後創建一個新的文件,添加它裏面的代碼和動態加載JS文件。 –

+0

什麼是用例? –

+0

@VedranMaricevic很酷的想法,但我沒有訪問 – volos

回答

2

感謝在座的各位有趣的答案。

因此,我已閱讀並嘗試使用您建議我的所有方法。 所有這些都是eval(),即使你不會在代碼中使用eval。 在我的項目中,我使用WebWorkers修復了問題。這項技術有很多好處,請閱讀文章MDN https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

但是,我必須使用「新功能」的這種方法。

所以正確答案是:

你離不開的eval和新功能()創建字符串函數。

這是編寫自己的簡單解析器的唯一方法。

感謝@brianxautumn