Можно ли как-нибудь определить, есть ли у функции состояние в Javascript? - PullRequest
0 голосов
/ 23 апреля 2020
a = function() {
    if(this.n === undefined) {
        this.n = 0;
    }
    this.n += 1;
    return(this.b);
}
b = function() {
    return(5);
}

В этом случае a будет с состоянием, а b будет без состояния. Можно ли создать в javascript функцию hasSate(f), которая возвращает true, если она имеет состояние, как в a, и возвращает false, если она не имеет состояния, подобного b? Если так, как бы вы это сделали?

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете создать экземпляр функции и проверить, есть ли propertyNames, связанные с этим новым экземпляром с функцией Object.getOwnPropertyNames.

let a = function() {
    if(this.n === undefined) {
        this.n = 0;
    }
    this.n += 1;
    return b();
}
let b = function() {
    return 5;
}


function hasState(fn) {
  let x = new fn();
  if(Object.getOwnPropertyNames(x).length > 0) {
     return true;
  }
  return false;
}

console.log(hasState(a))
console.log(hasState(b));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...