gpt4 book ai didi

javascript - 获取对象引用和函数名称

转载 作者:行者123 更新时间:2023-11-28 15:11:46 28 4
gpt4 key购买 nike

如何从 objectReference["functionName"] 形式的输入中检索对包含函数的对象的引用。

示例:

function aaa(param) {
var objectReference = /*..???...*/;
var functionName = /*...???..*/;

// Now expected result is that objectReference contains
// a reference to myObject, and functionName contains a
// string with name of function (implemented in myObject),
// so I can invoke it with objectReference[functionName]()
// after some manipulation.
}

var myObject = new SomeFunction();

aaa(myObject["myFunction"]);

谢谢

最佳答案

您无法执行您所列出的任何一项操作。这里有两件事:

  1. 获取myObject

  2. 获取该对象用来引用函数的属性名称

在代码中传递给 aaa 的值只是对该函数的引用。对对象的引用不会传递到 aaa 中,也不会传递有关对象用于引用函数的属性的任何信息。两者都不能从函数引用本身推断或导出。 (该函数可能有一个名称,在现代 JavaScript 引擎上可以通过其 name 属性访问该名称,但这很可能与该对象所使用的属性的名称不同用于引用它。)

为了做到这一点,您必须单独传递它们,或者作为离散参数:

aaa(myObject, "myFunction");

或者作为一个对象

aaa({obj: myObject, prop: "myFunction"});

在后一种情况下,aaa 可能看起来像

function aaa(info) {
// Use info.obj and info.prop here
// The call would be
info.obj[info.prop]();
}

如果您除了进行调用之外并不真正需要对象引用,另一种选择是使用 Function#bind:

aaa(myObject["myFunction"].bind(myObject));

aaa 将接收一个函数引用,在调用该函数引用时,将使用引用 myObjectthis 来调用原始函数。所以aaa实际上无法获取对象引用,但它仍然可以进行调用。

关于javascript - 获取对象引用和函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36114562/

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