我正在尝试在 Node js 中编写数据库抽象,情况如下:
假设我有一个对象表数组,其中数据库中的每个表都有一个对象:
tables = [{ tableName: product, select: mySelect }, { tableName: order, select: mySelect }]
正如您所看到的,每个表都有一个选择。现在的问题是,在 mySelect 函数中,我想根据调用者的表名生成一个 sql 脚本,如下所示:
function mySelect(){
var tableName = //Find the callers name (for instance product);
var select = "SELECT * FROM " + tableName
}
如何获取在 JavaScript 中调用 select 函数的对象的名称?
最佳答案
function myfunc() { alert(arguments.callee.name); }
b = myfunc;
b();
这将写入“myfunc”(FF、Chrome,我认为是 Safari)
如果你想从外部获取名称,你可以解析它:
b.toString();
但我认为函数对象的 name 属性可能正是您所需要的:
alert(b.name);
我已经了解到,这在 IE 和 Opera 中不可用,因此您只能在这些浏览器中手动解析它。
另一种选择
function antoherFunction(args) {
var ret = args.toString();
ret = ret.substr('function '.length);
ret = ret.substr(0, ret.indexOf('('));
return ret;
}
但是..使用Function.caller是非标准的,并且arguments.callee在严格模式中是被禁止的。
关于javascript - 如何获取正在运行的函数所属的对象名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194212/