javascript - 如何获取正在运行的函数所属的对象名?

标签 javascript node.js

我正在尝试在 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/

相关文章:

javascript - Uncaught Error : Minified React error #130

javascript - 使用 WebSharper 编译器编写 Node.js 应用程序

Javascript document.getElementById 似乎不起作用

javascript - 如何在javascript中动态引用一个变量

node.js - 如何编写一个可以从命令行调用以及从其他文件调用 'require()' d 的 Node.js 文件?

javascript - 不能用 mongoose 将项目 $push 到数组中

javascript - 语法错误: Unexpected token o in JSON at position 1 over ajax request

javascript - 如何将 Uint8Array 转换为 javascript 中的 float ?

javascript - 如何使div位置固定而不 float

javascript - 查找 Modernizr 设置