gpt4 book ai didi

javascript - 获取关联数组中当前函数的键

转载 作者:行者123 更新时间:2023-11-30 12:51:55 26 4
gpt4 key购买 nike

如果我有以下带有函数键的数组

var a = {};
a["first"] = function() {};

是否可以获取与该函数关联的键的名称并使用它在函数中?

最佳答案

不,仅使用函数内的代码而不引用函数外的任何内容,在一般情况下,函数不可能知道它是从该对象的该属性中检索到的。

不过,如果我们做出一些大的假设,您可以接近。假设该函数作为检索其值的同一表达式的一部分被调用(例如,a["first"]()a.first()),并假设它以正常方式调用,然后在函数内 this 将引用 a。但是如果不求助于 arguments.callee,该函数仍然无法确定 this (a) 上的哪个属性引用了它,这是非常糟糕的做法,已弃用。并且无法区分各种场景(包括 a 上的多个属性引用相同的函数)。

如果您可以接受将来不太可能在引擎中运行的不良做法和代码,那么:

var a = {};
a["first"] = function() {
var thisFunction = arguments.callee; // **BAD PRACTICE** **DEPRECATED**
var key;
for (key in this) {
if (this[key] === thisFunction) {
console.log("This function MAY have been called via the " + key + " property");
}
}
};
a["first"]();

...但不能保证它不是:

var f = a.first;
f.call(a);

...或者

var a = {};
a["first"] = function() {
// ...see above...
};
a["second"] = a["first"];
a["third"] = a["first"];
// ...and so on...
a["fourteenth"]();

关于javascript - 获取关联数组中当前函数的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com