Вот один из моих трудных вопросов для ответа.Я пытаюсь создать функцию, которая может определить, от какого объекта и какого свойства он был вызван.Функция должна работать для любого метода или любого свойства любого класса.Вот какова моя цель:
Object.prototype.WHO_AM_I = function WHO_AM_I()
{
print("FUNCTION CALLED FROM: ? ITEM IN ?? CLASS.");
}
class CLASS
{
constructor()
{
this.PROPERTY = "";
}
METHOD()
{
return;
}
}
let OBJECT = new CLASS()
OBJECT.PROPERTY.WHO_AM_I();
OBJECT.METHOD.WHO_AM_I();
То, что я хочу, чтобы этот код выводил:
FUNCTION CALLED FROM PROPERTY ITEM IN CLASS CLASS.
FUNCTION CALLED FROM METHOD ITEM IN CLASS CLASS.
Итак, моя цель - получить имя метода или свойства, по которомуВызвана функция WHO_AM_I
и имя класса, в котором определен этот элемент.
пример 2:
"TEST".substring.WHO_AM_I();
[].length.WHO_AM_I();
Должен вывести:
FUNCTION CALLED FROM: substring ITEM IN String CLASS.
FUNCTION CALLED FROM length ITEM IN Array CLASS.
НадеюсьВы получите картину.Так что я делаю, чтобы внедрить метод WHO_AM_I
в каждый объект, созданный во всем javascript, и хочу иметь возможность вызывать этот метод для любого метода или любого свойства любого класса во всем javascript независимо от того, является ли это мой собственный классили встроенный класс java-скрипта.
Я могу использовать this
внутри WHO_AM_I
метода.Это даст мне ссылку на свойство или метод, для которого был вызван метод WHO_AM_I
.Но настоящая проблема в том, как мне получить класс, в котором определен этот метод или свойство?Я не могу понять это.super
не помогает, поскольку указывает на родительский объект элемента, а не на объект, в котором определен элемент.Кроме того, я не могу получить имя элемента, если элемент не является методом, и в этом случае я могу использовать this.name
, чтобы получить имя метода.И вот где я застрял.Я могу решить эту проблему для первого?Отметьте в WHO_AM_I
метод, если я поставлю this.name
, но он работает только в том случае, если я вызываю WHO_AM_I
метод для другого метода, но не для свойства класса.Но я не могу решить эту проблему ни на секунду ??вопросительный знак вообще.
Итак, мой вопрос: возможно ли в javascript узнать, в каком классе определен метод?И если это так, что я должен поставить вместо ?
и ??
в моем методе WHO_AM_I
, который я внедрил в java-скрипты Класс объекта для получения нужного результата?