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