Как вызвать метод onload в JavaScript - PullRequest
0 голосов
/ 15 января 2019

Поэтому я хочу вызвать функцию Local.getThis onload с этим кодом:

    class Local {
        getThis() {
            let that;
            if (localStorage.getItem('that') === null) {
                that = [];
                console.log(that);
                localStorage.setItem('that', that);
            } else {
                that=JSON.parse(localStorage.getItem('that'));
                console.log(that);
            }
        }

    // DOM Load Event 
    document.addEventListener('DOMContentLoaded', Local.getThis)

Но ничего не происходит, без ошибок ничего. Но когда я изменяю «getThis» на STATIC, он работает (вывод: []). Это должно быть СТАТИЧЕСКИМ ??

приписка

После установки этого = []; Я получаю ошибку

'Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at HTMLDocument.getThis'

при следующей перезагрузке, но это, вероятно, совсем другая проблема, я думаю.

РЕДАКТИРОВАТЬ:

Для записи ошибка была связана с localStorage.setItem('that', that);, она должна быть, конечно, localStorage.setItem('that', JSON.stringify(that));

Ответы [ 3 ]

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

Но ничего не происходит, без ошибок ничего.Но когда я изменяю «getThis» на STATIC, он работает (вывод: []).Должен ли он быть STATIC ??

Чтобы вызвать ваш метод как Local.getThis должен быть static .

В противном случае вам необходимо создать экземпляр Local.

var local = new Local();
document.addEventListener('DOMContentLoaded', function() {
  local.getThis();
})
0 голосов
/ 15 января 2019

часть 1: это - зарезервированное слово в JavaScript, измените имя параметра.

part 2: Local является классом, поэтому для доступа к функции непосредственно из него эта функция должна быть статической. В противном случае экземпляр должен быть инициирован первым. и функция может затем использоваться из этого экземпляра.

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

Вы должны сначала создать экземпляр класса Local, чтобы иметь this

const local = new Local();
document.addEventListener('DOMContentLoaded', local.getThis.bind(local))
//or
document.addEventListener('DOMContentLoaded', function() {
  local.getThis();
})

Обновление

Также нельзя использовать имя переменной this, поскольку это зарезервированное слово. Если вам не нужен контекст (this), вы можете создать метод как статический метод:

class Local{}
Local.getThis = function() {
 // code without this
}

так что вы можете использовать как вы написали:

document.addEventListener('DOMContentLoaded', local.getThis);
...