在 JavaScript 中,您可以在 method/function 中引用一个 method/function 名称吗?

In JavaScript, can you reference a method/function name within that method/function?

我正在 JavaScript 中为 WebdriverIO 构建一个自动化框架。

“开箱即用”的错误消息不太有用,我想将 class 名称和方法名称作为前缀的一部分添加到抛出的错误消息中当 method/function 失败时。

我已经用 ClassName.name

调用了 class 的名字

但是,我还没有找到在不使用某些硬编码值的情况下引用方法名称的解决方案。

下面是我想要进行的更改的摘要。

之前:

setElementValue(element, value){
    try{
        this.waitForElementAndScroll(element);
        $(element).setValue(value);
    }
    catch(error){
        throw `${BasePage.name}.setElementValue: ${error.message}`;
    }
}

之后:

setElementValue(element, value){
    try{
        this.waitForElementAndScroll(element);
        $(element).setValue(value);
    }
    catch(error){
        throw `${BasePage.name}.${setElementValue.name}: ${error.message}`;
    }
}

其中${setElementValue.name}是引用method/function名称的方法。

非常感谢!

我尝试了以下但没有成功:

method.name //ReferenceError: method is not defined

(method).name //ReferenceError: method is not defined

Function.name //Returns "Function"

Function.value //Returns "undefined"

constructor.name //Returns "Object"

setElementValue.name //ReferenceError: setElementValue is not defined

我发现这个(非常明显的)解决方案适合我:

this.setElementValue.name

抛出的错误信息是:

throw `${BasePage.name}.${this.setElementValue.name}: ${error.message}`;

方法失败时输出以下错误日志:

`BasePage.setElementValue: element ("#submit-button") still not displayed after 500ms`