代码示例 :
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, '__lineNumber', { get: function () { return __stack[1].getLineNumber(); } });
Object.defineProperty(global, '__functionName', { get: function () { return __stack[1].getFunctionName(); } });
function fc() {
console.log(__lineNumber); // 函数位置
console.log(__functionName); // 函数名
}
fc();
代码运行 :