В JavaScript вы можете ссылаться на имя метода/функции внутри этого метода/функции?

Я создаю структуру автоматизации в JavaScript для WebdriverIO.

Сообщения об ошибках «из коробки» не слишком полезны, и я хотел бы добавить имя класса и имя метода как часть префикса к сообщению об ошибке, которое выдается при сбое метода/функции.

Мне удалось назвать имя класса с помощью ClassName.name

Однако я не нашел решения для ссылки на имя метода без использования какого-либо жестко заданного значения.

Ниже приводится краткое описание изменений, которые я хотел бы внести.

До:

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.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" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел это (очень очевидное) решение для меня:

this.setElementValue.name

где выброшенное сообщение об ошибке:

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

который выводит следующий журнал ошибок при сбое метода:

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

Другие вопросы по теме