Функция, объявленная в объекте, не является функцией - PullRequest
0 голосов
/ 24 января 2019

У меня есть объект с методом внутри, который называется Handler.addToScore(). Когда этот метод вызывается, я получаю сообщение о том, что это не функция. Я не знаю, что здесь может быть не так.

const DOM = () => {
  const dom = {}

  dom.score = document.getElementsByClassName('score')[0]

  return dom
}

const State = () => {
  const state = {}

  state.score = 0
  state.isLoggedIn.facebook = 0
  state.isLoggedIn.linkedin = 0

  return state
}

const Handler = () => {
  const handler = {}

  handler.addToScore = function() { DOM.score.innerHTML = State.score }
  return handler
}

function checkLoginState() {
  FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
  });
}

function statusChangeCallback(response) {
  if(response.status === 'connected') {
    console.log( 'Logged in and authenticated' )
    Handler.addToScore()
  } else {
    console.log('Not authenticated')
  }
}

Ответы [ 2 ]

0 голосов
/ 24 января 2019

вам нужно запустить функцию Handler перед вызовом метода addToScore

Handler().addToScore();
0 голосов
/ 24 января 2019

Измените строку на

function statusChangeCallback(response) {
  if (response.status === "connected") {
    console.log("Logged in and authenticated");
    Handler().addToScore(); // see comment, Handler is a function. 
  } else {
    console.log("Not authenticated");
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...