2012-08-22 5 views
1

런타임시 특정 객체/함수를 사용할 수 있는지 여부를 감지 할 수있는 JavaScript 유틸리티를 작성했습니다. 여기에 소스 코드이며,이 작동하지만 그것은 당신이 다른 개체를 테스트 할 때마다 편집이 필요 : "개체"또는 "기능"는 항목이있는 경우를 나타내는JavaScript가 문자열을 해당 객체로 변환합니다.

버튼을 클릭 할
<!DOCTYPE html> 
<html> 
    <head> 
     <title>HTML5 Template</title> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('#TestObject').click(function() { 
        alert(typeof(HTMLCollection)); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <input id="ObjectType" type="text" /> 
     <input id="TestObject" type="button" value="Test" /> 
    </body> 
</html> 

, 그것은 경고 표시를 존재하지 않으면 "undefined"가됩니다.

내가 원하는 것은 테스트 할 개체에 입력 할 수있는 텍스트 상자 <input id="ObjectType" type="text" />을 가져온 다음 단추를 눌러 테스트하면 문서를 계속 편집 할 필요가 없습니다. 이것이 가능한가? 내가 사용할 수있는 반성과 비슷한 것이 있습니까?

답변

3

실제로 이것은 JavaScript 객체 속성이 실제로 연관 키 - 값 쌍인 것이므로 obj.propertyobj['property']과 같습니다. 문제이 적용

, 다음 코드는 작동합니다 : 모든 "글로벌"변수는, 실제로 window 개체의 속성 때문에

alert(typeof(window[$('#ObjectType').val()])); 

이 작동합니다.

1

window[className]을 수행하여 문자열로 묶은 클래스 이름에서 개체를 가져올 수 있습니다. 같은 단지 alert(typeof(window[$("#ObjectType").val()]));

으로 alert(typeof(HTMLCollection)); 교체

이 코드를 유지 : 우리는 클래스 이름에서 개체를 받고, 입력 텍스트 상자에서 클래스 이름의 문자열 값을 받고, 그리고에 대해서 typeof를 호출하여 그것을 사용합니다
관련 문제