Czy w kodzie można uzyskać dostęp do właściwości ["[[FunctionLocation]]"]
, którą narzędzia Google Chrome dla deweloperów pokazują przy logowaniu konsoli do funkcji?Lokalizacja funkcji programowo programowo
Odpowiedz
Odpowiedź, na razie, to nr.
Obiekt [[FunctionLocation]]
widać w Inspector jest dodawany w V8Debugger::internalProperties()
w kod C++ debugger'a, który wykorzystuje inną funkcję C++ V8Debugger::functionLocation()
w celu zebrania informacji na temat funkcji. functionLocation()
używa następnie wielu API C++ specyficznych dla V8, takich jak v8::Function::GetScriptLineNumber()
and GetScriptColumnNumber()
, aby znaleźć dokładne informacje.
Wszystkie opisane powyżej interfejsy API są dostępne wyłącznie dla kodu C++, a nie dla kodu JavaScript. Jeśli próbujesz wykonać to zadanie na platformie takiej jak Node.js, powinieneś być w stanie napisać moduł natywny. Jeśli nie, to masz pecha.
Funkcja console.log może wyświetlać nazwę funkcji w przeglądarce Chrome pod numerem limited language support.
Znalazłem nazwę funkcji przydatną w debugowaniu wywołań zwrotnych i podczas korzystania z observer pattern. Zauważ, że to wymaga funkcji nazewnictwa (anonimowe nazwy funkcji są oczywiście puste).
function myFn() {}
if (typeof myFn === 'function') {
console.log('Name of function', myFn.name)
}
Wyjścia Name of function myFn