比方说f(args),我有一个函数,它是从我的代码中的许多地方调用的.
何时args未定义f()会引发异常.
我想确定谁f()用undefined参数调用.
找到调用的确切行(文件名+行号)最简单的方法是f()什么?
有可能在Firebug中看到来电者吗?
但如果函数被定义为变量,我需要一个答案,如:
var Hello = function() {
// How do you find out the caller function is 'main'?
}
var main = function() {
Hello();
};
main();
Run Code Online (Sandbox Code Playgroud)
如果你将arguments.callee.caller.name粘贴到Hello中,它只返回一个空白.
有没有一种方法可以在TypeScript中获取函数调用者的类型名称?另外,有没有办法获取当前对象类型的名称?
就像是:
export class SomeData {
sampleFunc() {
console.log(this.getTypeName());
}
//or
anotherFunc(caller: any) {
console.log(caller.getTypeName());
}
}
Run Code Online (Sandbox Code Playgroud)
getTypeName是这里所需的功能。编译后,TypeScript中的类型消失。有typeof(用于获取类定义对象本身),但我看不到如何获取名称。
这其中的一个用法可能是更清洁记录与console.group(name)和console.groupEnd()-至少在开发时间。
编辑:
据我搜索,有一个针对Metadata Reflection API的Polyfill提案“ 将Decorators添加到ES7,以及一个ES7 Reflection API for Decorator Metadata的原型 ”。可以将它与TypeScript中的装饰器一起使用。
所以我想知道是否有一种方法可以使用function.name但是对象.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name
我的意思是这样的:
function myFunction() {}
console.log(myFunction.name); // logs "myFunction"
// but like
var myObj = {};
console.log(myObj.name); // logs "myObj"
Run Code Online (Sandbox Code Playgroud)
如果有可能,它将如何处理这样的事情?
var myObj = {};
var myObj2 = {};
console.log(myObj2.name); // logs "myObj" or "myObj2" or both?
Run Code Online (Sandbox Code Playgroud) 我们想要测量以下 Angular 事件,并且我们知道如何做到这一点:
但我们想记录额外的信息:
我们怎样才能得到这些额外的信息呢?
可能重复:
你如何在JavaScript中找到调用者函数?
如果我放入console.log()一个函数,是否有任何我可以放在console.log()语句中以找出调用函数的位置?或者是否有其他方法可以找出如何调用函数?
我试图理解一个相对复杂的(对于我的经验来说很复杂的)一段代码,并且很难弄清楚什么是调用某个函数.谢谢.