【问题标题】:How to call a method onload in JavaScript如何在 JavaScript 中调用方法 onload
【发布时间】:2019-01-15 13:00:08
【问题描述】:

所以我想用这个代码调用一个函数 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));

【问题讨论】:

  • 我相信您需要先创建该类的一个新实例,然后才能使用其实例方法之一。即,new Local() 在尝试使用 getThis 之前

标签: javascript methods static-methods domcontentloaded


【解决方案1】:

第 1 部分:this 是 JavaScript 中的保留字,请更改参数名称。

第 2 部分:Local 是一个类,因此要直接从它访问一个函数,该函数必须是静态的。否则需要先启动一个实例。然后可以从该实例中使用该函数。

【讨论】:

  • 抱歉这个错误,但它实际上是一个更复杂程序的一部分,所以我将它命名为“this”只是为了举例。
【解决方案2】:

但是什么都没有发生,没有任何错误。但是当我改变 “getThis” 到 STATIC 它可以工作(输出:[])。它需要是静态的吗 ??

要将您的方法称为 Local.getThis 需要是静态

否则您需要创建一个本地实例

var local = new Local();
document.addEventListener('DOMContentLoaded', function() {
  local.getThis();
})

【讨论】:

    【解决方案3】:

    你应该首先创建一个 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      相关资源
      最近更新 更多