2014-11-23 3 views
3

질문을 받으면 몇 가지 자바 스크립트 코드로 놀고 있었는데 objects을 javascript 파일에서 찾아서 인쇄 할 수 있습니까? 함수의?
나는 이것에 대한 대답을 제안하는 인터넷에서 아무 것도 발견하지 못했고, 이것이 가능할 지 의심 스럽지만 누구나 아이디어가 있다면, 나는 그것을 볼 흥미가있을 것이다.자바 스크립트 파일에있는 모든 객체의 배열을 얻으십시오

코드 예제가 이해가되지 않은 경우 :

var str = "Hello World!"; 
var num = 3.14; 
var obj = {}; 

function printOutObjects() { 
    var objs = []; 
    // Find objects in script... 
    console.log(objs); 
} 
+0

여기에 어떤 정보를 기록해야합니까? 'str, num, obj'? 'obj'? 'obj, objs'? – Scimonster

+7

클로저에있는 객체도 원합니까? DOM 요소는 어떻습니까? 프로토 타입과 같은 작업의 부작용으로 생성 된 객체를 포함 하시겠습니까? 내부 객체 또는 에뮬레이트 된 사유 재산도 포함시켜야합니까? 기본적으로 JS의 모든 요소는 객체, 배열, 날짜 객체, 함수 등의 객체이기도합니다. ** TL; DR : JS에서, 거의 모든 것이 객체 *이므로 "객체"가 의미하는 것을 정의하십시오. – Joseph

+0

가능하면 모두 가능합니다. @Scimonster –

답변

1

다음을 사용할 수 있지만 그것을 얻을 것이다 이론적 운동 있도록 잘 궁극적으로 모든는 window 객체의 일부입니다 당신 약간 전혀 이렇게 할 이유를 잘 모르겠어요

var str = "Hello World!"; 
var num = 3.14; 
var obj = {}; 

function printOutObjects() { 
    var objs = []; 
    objs.push(window); 
    recurseObj(window, objs); 
    console.log(objs); 
} 

function recurseObj(o, objs) { 
    if(typeof(o) == "undefined" || o == null || typeof(o) == "string" || typeof(o) == "number") { 
    return; 
    } 
    for(var c in o) { 
    // handle security exceptions and whatever else may come up 
    try { 
     // stop computer crashing 
     if(objs.length > 300) { 
     return; 
     } 
     else { 
     var obj = o[c]; 
     // Ensure its not already in the results 
     if(objs.indexOf(obj) == -1) { 
      objs.push(obj); 
      recurseObj(obj, objs); 
     } 
     } 
    } catch(e){} 
    } 
} 

printOutObjects(); 

상점, 당신이 단지는 Console에 window를 기록 할 수 있습니다 : 당신이 흥정 (컴퓨터를 충돌 할 수 있습니다)보다 더 e를 선택하고 페이지에 무엇이 있는지보고 싶다면 드릴 다운하십시오.

+0

보안 예외를 처리하고 무엇이 올지도 모릅니다! – ProllyGeek

+0

훌륭하고 좋은 답변입니다. –

+0

이 작업을 비동기로 제안하십시오. 웹 작업자를 사용하거나 타이머를 사용하여 작업 연기하십시오. – Joseph

관련 문제