javascript - motor - v8 jugo
Acceder al número de línea en JavaScript V8(Chrome y Node.js) (1)
Los desarrolladores de JavaScript que han pasado tiempo en lenguajes como C a menudo pierden la capacidad de utilizar ciertos tipos de introspección, como números de líneas de registro y de qué método se invocó el método actual. Bueno, si estás usando V8 (Chrome, Node.js) puedes emplear lo siguiente.
Object.defineProperty(global, ''__stack'', {
get: function(){
var orig = Error.prepareStackTrace;
Error.prepareStackTrace = function(_, stack){ return stack; };
var err = new Error;
Error.captureStackTrace(err, arguments.callee);
var stack = err.stack;
Error.prepareStackTrace = orig;
return stack;
}
});
Object.defineProperty(global, ''__line'', {
get: function(){
return __stack[1].getLineNumber();
}
});
console.log(__line);
Lo anterior registrará 19
.
Combinado con arguments.callee.caller
puede acercarse al tipo de registro útil que obtiene en C a través de macros.