W Firebug karta DOM pokazuje listę wszystkich publicznych zmiennych i obiektów. W konsoli Chrome musisz wpisać nazwę zmiennej publicznej lub obiektu, który chcesz zbadać.
Czy istnieje sposób - a przynajmniej polecenie - aby konsola Chrome wyświetlała listę wszystkich publicznych zmiennych i obiektów? Zaoszczędzi to dużo pisania.
object
, dlaczego by jej nie mieć?[[Prototype]]
Nieruchomość wewnętrzna globalnego obiektu jest zależna od implementacji w prawie wszystkich większych wdrożeń -V8, Spidermonkey, Rhino, itp. globalne dziedziczy sprzeciwić się w pewnym momencie zObject.prototype
, ale na przykład w innych implementacjach -JScript, besen, dmdscript, etc. ..-window.hasOwnProperty
nie istnieje , więc nie istnieje, aby to przetestować, możemy:Object.prototype.isPrototypeOf(window);
for(var b in window) { if(window.hasOwnProperty(b)) console.log(b+" = "+window[b]); }
Gdy wykonywanie skryptu jest zatrzymane (np. W punkcie przerwania), możesz po prostu wyświetlić wszystkie globale w prawym panelu okna Narzędzi programisty:
źródło
Otwórz konsolę, a następnie wprowadź:
keys(window)
aby zobaczyć zmiennedir(window)
widzieć przedmiotyźródło
dir(Function("return this")())
sprawia, że działa również w Web Workersdir(window)
nie działa w przeglądarce Firefox (tak, wiem, że ten wątek dotyczy Chrome), alekey(window)
działa w przeglądarce Firefoxwindow
Obiekt zawiera wszystkie zmienne publiczne, więc można go wpisać w konsoli, a następnie rozwinąć, aby wyświetlić wszystkie zmienne / cechy / funkcje.źródło
Jeśli chcesz wykluczyć wszystkie standardowe właściwości obiektu okna i wyświetlić globały specyficzne dla aplikacji, spowoduje to wydrukowanie ich na konsoli Chrome:
Skrypt działa dobrze jako bookmarklet. Aby użyć skryptu jako bookmarkletu, utwórz nową zakładkę i zastąp adres URL następującym:
źródło
David Walsh ma na to dobre rozwiązanie. Oto moje zdanie na ten temat, łącząc jego rozwiązanie z tym, co zostało odkryte w tym wątku.
https://davidwalsh.name/global-variables-javascript
x
teraz ma tylko globały.źródło
prop.toString
wydaje się, że nie wszędzie istnieje, więc warunek może być bardziej defensywnyif(window.hasOwnProperty(b) && prop && (prop.toString && !prop.toString().includes('native code')) && !standardGlobals.includes(b))
Wpisz następującą instrukcję w konsoli javascript:
Teraz możesz sprawdzić zasięg globalny za pomocą zwykłych narzędzi do debugowania.
Szczerze mówiąc, dostaniesz wszystko w
window
zasięgu, w tym wbudowane przeglądarki, więc może to być coś w rodzaju igły w stogu siana. : /źródło
Możesz wypróbować to rozszerzenie Firebug Lite dla Chrome.
źródło
Aby wyświetlić dowolną zmienną w chrome, przejdź do „Źródła”, a następnie „Obejrzyj” i dodaj ją. Jeśli dodasz tutaj zmienną „window”, możesz ją rozwinąć i eksplorować.
źródło
Zaktualizowana metoda z tego samego artykułu, o którym wspominał Avindra - wstrzykuje ramkę iframe i porównuje jej
contentWindow
właściwości z globalnymi właściwościami okna.źródło
Wpisz:
this
w konsoliaby uzyskać
window object
myślę (?), myślę, że jest to w zasadzie to samo, co pisaniewindow
w konsoli.Działa przynajmniej w Firefox i Chrome.
źródło
Ponieważ wszystkie „zmienne publiczne” są w rzeczywistości właściwościami obiektu okna (okna / karty, na którą patrzysz), możesz po prostu sprawdzić obiekt „okna”. Jeśli masz wiele ramek, i tak musisz wybrać odpowiedni obiekt okna (jak w Firebug).
źródło
Spróbuj tego prostego polecenia:
źródło
Wymień zmienną i ich wartości
Wyświetl wartość określonego obiektu zmiennej
Źródła: komentarz od @ northern-bradley i odpowiedź od @ nick-craver
źródło
źródło