eval()
을 사용하지 않고 다음 작업을 수행 할 수 있습니까?개체 이름이 문자열 인 경우 개체 이름이 정의되어 있는지 확인하십시오.
다음 함수는 문자열이 객체 이름 인 문자열 배열을 허용합니다. 나는 그들 중 어느 것도 정의되지 않았 음을 보장하기 위해 반복한다.
는alert(hasMissingDependencies(['App.FooObject', 'App.BarObject']));
내가 선호하는 것 :이와 eval()
function hasMissingDependencies(dependencies) {
var missingDependencies = [];
for (var i = 0; i < dependencies.length; i++) {
if (eval('typeof ' + dependencies[i]) === 'undefined') {
missingDependencies.push(dependencies[i]);
}
}
if (missingDependencies.length > 0) {
return true;
}
return false;
}
를 사용하지 않고이 작업을 수행 할 수 있도록하고 싶습니다, 나는 다음과 같이 뭔가를 통과하고 내가 원하는 것을 얻을 수 있어요 eval()
을 사용하지 않지만 객체 이름이 문자열로 전달 될 때 객체가 정의되지 않았는지 확인하는 다른 방법을 찾지 못했습니다.
왜 문자열로 전달해야합니까? –
** 다른 기능으로 정의되지 않은 ** 개체 이름을 전달하는 다른 방법을 알지 못합니다. 예를 들어, 'hasMissingDependencies (App.FooObject, App.BarObject)'를 호출하면 두 객체 중 하나가 정의되지 않은 경우 오류가 발생합니다. 내가 놓친 게 있니? – Jared
어디에서 전달하고 있습니까? 가능한 해결책에 대한 내 대답을 볼 수 있지만 전달하기 전에 존재하는지 확인한 다음 그렇지 않으면 null 또는 다른 값을 전달하는 것이 훨씬 간단합니다. –