2012-07-09 28 views
3

学习JS是一条崎岖不平的道路...我想了解我的代码中发生了什么, 因此console.log();似乎是我的朋友。在函数堆栈中的JavaScript内部记录函数/对象名称的函数栈

有时我甚至不知道错误来自哪里(或者我可能只是 太愚蠢)所以我想更好地记录我的应用程序堆栈。我试图找到一个答案这个 简单又复杂的问题

如何做到这一点?除了与console.log()

例如获得名称的函数(构造)的其中console.log被称为证明是有问题:

function SomeFunction(argument1,argument2) { 
    console.log(this+'> 01 message'); 
    console.log(this.name+'> 02 message'); 
    console.log(this.constructor+'> 03 message'); 
    console.log(this.constructor.name+'> 04 message'); 
    console.log(this.prototype+'> 05 message'); 
    console.log(this.constructor.method+'> 06 message'); 
} 

SomeFunction.prototype.sayHello = function(} { 
    console.log(this+'> 01 says Hello'); 
    console.log(this.name+'> 02 says Hello'); 
    console.log(this.constructor+'> 03 says Hello'); 
    // and so on... // 
} 

大二哪一个是正确的? SomeFunction.constructor.name正在工作, 但这种语法每次都很长,所以像

var fn = this.constructor.name是有道理的,但那样做效率不高。

有人可以指向我的良好做法方向,我如何从我的代码挤压 正确的日志信息?

FYI:我搜索了几本关于这个简单的主题的书籍,并且 都没有提到它。

+2

在开发人员工具中使用断点代替 – Joseph 2012-07-09 19:42:01

+0

抱歉,但这不是我寻找的答案 – Inoperable 2012-07-09 19:45:02

+0

我认为你留下了语言和API提供的语法(但繁琐)你..你可以像你提到的那样将它投掷到别的东西上......(fn)但是为什么?这些额外的几个字符不会破坏银行的文件大小(如果他们这样做,然后做你最初的建议) – rlemon 2012-07-09 19:47:51

回答

0

使用开发人员工具(F12,control-I)或get firebug并享受单步执行代码,检查和更改变量,编辑css。它会极大地提高你的javascript学习体验...

+1

节点在服务器上,没有浏览器。 – Inoperable 2012-07-09 19:55:22