вы можете использовать этот метод утилиты getProperty
, который я всегда использую, чтобы убедиться, что я вернул вложенное пространство имен, не беспокоясь о том, определено ли что-либо:
function getProperty(ns, obj) {
var nsArray = ns.split('.'),
i = 0,
nsLen = nsArray.length;
while (nsLen > 0) {
var newNs = nsArray.shift();
if (obj[newNs]) {
obj = obj[newNs];
} else {
return false;
}
nsLen = nsArray.length;
}
return obj;
};
var index = "hdn_retain" + indexval;
// the following `value` will come back as a valid object/value or a false
value = getProperty('elements.' + index + '.value', frm);
if (value) {
// do whatever
} else {
// do not whatever
}
это может быть применено не только к этой ситуации, но и к любой другой ситуации, которую вам необходимо убедиться, что определенное пространство имен доступно перед использованием.