拋開了罕見的情況,在JavaScript中使用了eval() is considered bad practice。JavaScript,Eval和新 - 窮人的工廠
我剛剛遇到了一段代碼,它接受一個字符串並按該類型名稱構造一個對象。錯誤檢查,業務邏輯和上下文這樣做的切除,這裏是什麼樣子:
function factory(klass) {
eval("var obj = new " + klass + "()"); // Is there a better way?
return obj;
}
是否有更好(更安全,更清潔,和/或更快)的方式來實現類創建不使用eval?
我在尋找一個通用方式來創建一個類名稱。例如,想象一下,例如,代碼的另一部分動態加載JavaScript文件,生成代碼或允許用戶擴展,但是代碼的其他部分需要創建該類,而不需要工廠具有其先前的知識存在。
錯誤檢查等。爲了在StackOverflow上創建一個簡潔的例子而刪除了它 - 不是。 –
沒有深入瞭解它背後的原因,克拉斯是一個字符串。重要的是找到一種方法來做邏輯等價物,使用相同的輸入,而不使用eval()來拉開特技。 –