對不起,我不知道如何解釋。如何在不使用eval的情況下完成此操作
該函數接受一個URI,例如:/ foo/bar/1293。如果存在,該對象將存儲在一個類似{foo:{bar:{1293:'content ...'}}}的對象中。該函數遍歷URI中的目錄並檢查該路徑是否未定義,並同時用隨後使用eval()調用的代碼構建一個字符串。包含代碼的字符串看起來像刪除內存[「foo」] [「bar」] [「1293」]
是否有任何其他方式可以實現此目的?也許將保存的內容存儲在 以外的其他東西中?
remove : function(uri) {
if(uri == '/') {
this.flush();
return true;
}
else {
var parts = trimSlashes(uri).split('/'),
memRef = memory,
found = true,
evalCode = 'delete memory';
parts.forEach(function(dir, i) {
if(memRef[dir] !== undefined) {
memRef = memRef[dir];
evalCode += '["'+dir+'"]';
}
else {
found = false;
return false;
}
if(i == (parts.length - 1)) {
try {
eval(evalCode);
} catch(e) {
console.log(e);
found = false;
}
}
});
return found;
}
}
當然,不知道我在想什麼......謝謝:) – xCander