@newaitix

Как в середине функции узнать какой метод был вызван?

var test=function(){
};
test.on //как при таком вызове запустить функцию test и в середине нее узнать что был вызван метод on ?


прокси ?
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
Никак, потому что вы не вызываете метод.
Можно попробовать переписать это как-то так:
var test = function() {
  this.on = function() {
    console.log('был вызван метод on')
  }
  this.off = function() {
    console.log('был вызван метод off')
  }
};

x = new test
x.on()
x.off()

https://jsfiddle.net/mpmq6er9/

Если я не угадал суть вопроса, то уточните, что вы хотели сделать.
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Предположу, что в примере вызова у вас опечатка, и вы хотели вызывать test.on() – со скобками.

Обернуть в Proxy, но это не будет работать в старых браузерах и IE и вообще сомнительно, что именно это вам требуется. Может, пересмотреть весь код?
var test=function(){  
  console.log("method:", arguments[0]);
};

var handler = {
  get: function( target, name) {
    var _method;
    if(name in target) {
      return target[name];
    } else {
      return target.bind( null, name); // если не определено свойство, передаем его 1-м аргументом
    }
  }
};

test = new Proxy( test, handler);

test.on(); // method: on
test.blabla(); // method: blabla
test(); // method: undefined
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы