Добавить возвращаемый тип строки, когда функция доступна как переменная - PullRequest
0 голосов
/ 16 ноября 2018

Я не уверен, если это возможно (на самом деле я изо всех сил пытаюсь выяснить, что гуглить), но здесь это идет:

У меня есть функция

const test = () => {
  some logic..
  return bla
}

теперь, когда я использую 'test ()', я хочу, чтобы функция была выполнена.Но когда я использую 'test', я хочу получить пользовательскую строку.Можно ли как-то добиться этого через прокси объектов?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Вы можете сделать это, если вы сначала проверите тип переменной, в частности, вы проверите, является ли она Функция :

function isFunc(functionToCheck) {
 return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';
};

Так что еслиэто правда, тогда ваша переменная действительно влияет на функцию, и вы можете вернуть из нее то, что вам нужно:

const isItAFunction = somevariable;

if(isFunc(isItAFunction)) {
   // return your string
} else {
  // do something else
}
0 голосов
/ 16 ноября 2018

Возможно ли как-то добиться этого через прокси-серверы объектов?

Нет, это невозможно.Вы не можете создать вызываемый прокси как примитивную строку.Если вы хотите, чтобы ваш test (функция) объект показывал пользовательскую строку при строковом кодировании (как при соединении с другой строкой), просто присвойте ему пользовательский .toString() метод :

const test = Object.assign(() => "Hello World", {
  toString() {
    return "123";
  }
});
console.log("Example call " + test());
console.log("Example stringification " + test);
console.log("Function object", test);
console.log("as a string", String(test));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...