有几个选项可以快速解决这个问题。
1 - 使用console.error 不是很方便,实际的错误会被忽视,并且在控制台输出中看到很多红色可能会对您的士气产生负面影响。简而言之 - 不要使用,除非它是一个非常小的脚本或一些测试
2 - 将您的日志方法添加到 Object 的原型中以获取当前范围/模块名称/等。更加灵活和优雅。
Object.prototype.log = function(message){
console.log({
'message': message,
'caller': this,
'stack':arguments.callee.caller.toString()
});
};
使用(任何地方)作为:
this.log("foo");
您可以从 该线程添加技术以在对象中获取确切的函数名称,如下所示:
var callerFunc = arguments.callee.caller.toString();
callerFuncName = (callerFunc.substring(callerFunc.indexOf("function") + 9, callerFunc.indexOf("(")) || "anoynmous");
但是请确保您的范围被命名......迫使您从这个出发:
Module.method = function(){}
对此:
Module.method = function method(){}
至于行号,调用 (new Error()) 将使您能够访问调用它的行号 - 甚至在所有浏览器上都没有。
创建一个优雅的调试功能是一项工作
尽管我不愿承认,但暗示正则表达式而不是尝试结果的另一个答案似乎是解决您问题的更快方法。