Alat Pengembang Chrome bergetar, tetapi satu hal yang tampaknya tidak mereka miliki (yang dapat saya temukan) adalah cara untuk menemukan definisi fungsi JavaScript. Ini akan sangat berguna bagi saya karena saya sedang mengerjakan situs yang menyertakan banyak file JS eksternal. Tentu grep menyelesaikan ini tetapi di browser akan jauh lebih baik. Maksud saya, browser harus mengetahui hal ini, jadi mengapa tidak memaparkannya? Apa yang saya harapkan adalah sesuatu seperti:
- Pilih 'Periksa Elemen' dari halaman, yang menyoroti garis pada tab Elemen
- Klik kanan baris dan pilih 'Pergi ke definisi fungsi'
- Script yang benar dimuat di tab Script dan melompat ke definisi fungsi
Pertama, apakah fungsi ini ada dan saya hanya melewatkannya?
Dan jika tidak, saya menduga ini akan datang dari WebKit, tetapi tidak dapat menemukan apa pun untuk permintaan fitur Alat Pengembang atau Bugzilla WebKit .
javascript
google-chrome-devtools
Ryan DuVal
sumber
sumber
Jawaban:
Katakanlah kita sedang mencari fungsi bernama
foo
:foo\s*=\s*function
(mencarifoo = function
dengan sejumlah spasi di antara ketiga token itu),Varian lain untuk definisi fungsi adalah
function\s*foo\s*\(
untukfunction foo(
dengan jumlah spasi di antara ketiga token tersebut.sumber
foo
. Ada yang lain. Bagaimana jika fungsi kita adalah misbar['foo']
? (Tidak ada jawaban yang baik untuk pertanyaan itu, sejauh yang saya tahu --- pada dasarnya "jangan menulis kode yang berbelit-belit")Ini mendarat di Chrome pada 2012-08-26 Tidak yakin tentang versi pastinya, saya perhatikan di Chrome 24.
Tangkapan layar bernilai jutaan kata:
Saya memeriksa objek dengan metode di Konsol. Mengklik pada "Tampilkan definisi fungsi" membawa saya ke tempat dalam kode sumber tempat fungsi didefinisikan. Atau saya bisa mengarahkan kursor ke
function () {
kata untuk melihat fungsi tubuh di tooltip. Anda dapat dengan mudah memeriksa seluruh rantai prototipe seperti ini! CDT pasti rock !!!Semoga Anda semua merasa terbantu!
sumber
dir(myFunc)
findDefinition(myFunc)
? AFAIK yang belum ada ...({1:somefunction})
lalu klik kanan fungsi di dalam objek yang dicetak.Anda dapat mencetak fungsi dengan mengevaluasi namanya di konsol, seperti itu
ini tidak akan berfungsi untuk fungsi bawaan, mereka hanya akan menampilkan
[native code]
alih-alih kode sumber.EDIT : ini menyiratkan bahwa fungsi telah didefinisikan dalam ruang lingkup saat ini.
sumber
Pembaruan 2016 : di Versi Chrome 51.0.2704.103
Ada jalan
Go to member
pintas (tercantum dalamsettings > shortcut > Text Editor
). Buka file yang berisi fungsi Anda (disources
panel DevTools) dan tekan:atau di OS X:
Ini memungkinkan untuk membuat daftar dan menjangkau anggota file saat ini.
sumber
Cara lain untuk menavigasi ke lokasi definisi fungsi adalah dengan membobol debugger di suatu tempat Anda dapat mengakses fungsi dan memasukkan fungsi nama yang sepenuhnya memenuhi syarat di konsol. Ini akan mencetak definisi fungsi di konsol dan memberikan tautan yang di klik membuka lokasi skrip di mana fungsi tersebut didefinisikan.
sumber
Browser yang berbeda melakukan ini secara berbeda.
Pertama buka jendela konsol dengan mengklik kanan pada halaman dan memilih "Periksa Elemen", atau dengan menekan F12.
Di konsol, ketik ...
Firefox
Chrome
sumber
functionName.toSource()
juga berfungsi pada versi chrome terbaru.stop
.di konsol Chrome:
sumber
undebug(MyFunction)
untuk menghapus breakpoint lagi (setelah Anda menemukan implementasi metode)Saya menemukan cara tercepat untuk menemukan fungsi global adalah:
sumber
Di Google chrome, Periksa alat elemen Anda dapat melihat definisi fungsi Javascript apa pun.
sumber
Jika Anda sudah melakukan debugging, Anda dapat mengarahkan kursor ke fungsi dan tooltip akan memungkinkan Anda untuk menavigasi langsung ke definisi fungsi:
Bacaan lebih lanjut :
sumber
Saya memiliki masalah yang sama dalam menemukan sumber metode objek. Nama objek
myTree
dan metodenyaload
. Saya meletakkan breakpoint pada baris yang disebut metode itu. Dengan memuat ulang halaman, eksekusi berhenti pada saat itu. Kemudian pada konsol DevTools, saya mengetik objek bersama dengan nama metode, yaitumyTree.load
dan tekan Enter. Definisi metode ini dicetak pada konsol:Juga, dengan klik kanan pada definisi, Anda dapat pergi ke definisinya dalam kode sumber:
sumber