所以我想用以下代码调用函数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时,它可以工作(输出:[])。它需要是静态的吗?
PS
设置= []后;我收到错误
'Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at HTMLDocument.getThis'
在下一次重新加载时,但我想那可能是另一个问题。
编辑:
为便于记录,该错误与localStorage.setItem('that', that);
有关,当然应该是localStorage.setItem('that', JSON.stringify(that));
答案 0 :(得分:2)
第1部分:此是JavaScript中的保留字,请更改参数的名称。
第2部分:Local是一个类,因此要直接从该函数访问函数,该函数必须是静态的。否则,需要首先启动实例。然后可以在该实例中使用该功能。
答案 1 :(得分:1)
您应该首先创建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);
答案 2 :(得分:1)
但是什么也没有发生,没有错误也没有。但是当我改变 将“ getThis”设为STATIC即可(输出:[])。是否需要静态 ??
要以 Local.getThis 的方式调用您的方法,必须为静态。
否则,您需要创建本地实例。
var local = new Local();
document.addEventListener('DOMContentLoaded', function() {
local.getThis();
})