У меня есть прокси-обработчик, подобный этому:
let handler = {
get: function(target, name) {
let member = target[name];
if (typeof member === 'function') {
return function() {
//
}
}
return member;
}
}
Каждый раз, когда вызывается метод для объекта Proxy:
var obj = {
foo: function() {
//
}
}
var p = new Proxy(obj, handler);
p.foo();
... Он вызывает функцию, которая была возвращена изhandler
получатель.Но проблема в том, что когда метод доступен , а не , вызывается следующим образом:
p.foo;
Возвращается полное определение функции.
Есть ли способ, с помощью которого я мог бы проверить, осуществляется ли доступ к методу (p.foo
) или вызывается (p.foo()
)?Я пытаюсь получить что-то вроде:
if (typeof member === 'function' && member.isBeingCalled()) {
return function() {
//
}
}
Кроме того, в случае p.foo
я бы хотел вернуть определение member
вместо функции, которую возвращает обработчик обработчика.