Eine Funktion, die in JavaScript vermieden werden sollte, aber trotzdem häufig eingesetzt wird, ist „eval()“. Neben der äußerst schlechten Performance der eval-Funktion, ist auch die Sicherheit bei der Verwendung ein Problem, da damit beliebiger Code ausgeführt werden könnte. Meist kann man die Verwendung aber vermeiden.
Ein oft verwendeter Anwendungsfall von eval ist der Zugriff auf Subobjekte.
So schreibt man bei verschachtelten Objekten gerne Folgendes:
function getMyValue () {
return eval('parentObject["sub1.sub2.sub3.searchedValue"]');
}
Deutlich besser wäre hier aber die Verwendung einer Funktion, welche nicht eval vermeidet:
function reval (o, str, delimiter) {
// check preconditions delimiter = delimiter || '.';
if (typeof o !== 'object') {
return null;
}
if (typeof str !== 'string' || str.length <= 0) {
return o;
}
var keyArr = str.split(delimiter),
returnO = o,
i = 0;
for (i = 0; i < keyArr.length; ++i) {
returnO = returnO[keyArr[i]];
}
return returnO;
}
function getMyValue () {
return reval(parentObject, 'sub1.sub2.sub3.searchedValue');
}