【问题标题】:does var onload mean that it should run when page is loadedvar onload 是否意味着它应该在页面加载时运行
【发布时间】:2011-03-22 22:52:03
【问题描述】:

// test.js //

    var testObj = {};
    testObj.init = function(){
        console.log('google');
    }

var onload = testObj.init;

/// 这是什么意思,是在加载脚本时执行还是什么,我只是无法理解,因为它没有在谷歌浏览器插件下进入控制台...

【问题讨论】:

  • 对不起一个愚蠢的q,但我真的无法理解
  • 您是在页面加载时尝试执行某个功能并需要帮助,还是您找到了此代码并试图弄清楚它要完成什么?
  • 第二个确实试图让自己了解 JSJAC 库。 =)
  • 只需使用 var onload = testObj.init();

标签: javascript


【解决方案1】:

把它想象成给你的狗取 2 个名字:

var spot = new Dog();
var comeHereSpot = function ()  { return spot; }    
var comeHereBoy = comeHereSpot;

无论你打电话给comeHereSpot 还是comeHereBoy,同一只狗都会跑过来。

【讨论】:

    【解决方案2】:

    这只是意味着您的变量 onload 现在指向

    function(){
        console.log('google');
    }
    

    onload 在这里只是一个局部变量的名称。

    【讨论】:

      【解决方案3】:

      表示变量onload是对函数testObj.init的引用。 onload() 将执行函数并将 'google' 输出到控制台。

      【讨论】:

        【解决方案4】:

        不,这仅意味着您将其分配给名为 onload 的变量。

        如果变量名与window 对象的onload 属性冲突,则取决于代码的实际工作范围。在这种情况下,不会创建变量,而是使用现有属性。但是,您不应该依赖这种行为,您应该始终将其指定为对象的属性:

        window.onload = testObj.init;
        

        【讨论】:

        • 谢谢,它只是一个我坚持使用的 oxjs 库,没有太多的文档,而且示例不起作用....=(
        • 只有在没有 var 关键字的情况下才有效。 var 声明一个局部变量。如果代码只是onload = testObj.init,那么它可能会起作用。
        • 确实是一个 var,这里有一个代码部分“var onload = DemoApp.JSJaC.init;”我只是很困惑,无论如何非常感谢你们
        • @musicfreak:使用onload = fn; 可能很诱人,但应该是avoided...
        • @CMS:我知道,我不是说你应该这样做,我只是反驳了@Guffa 的说法。
        【解决方案5】:

        在您的代码中,onload 只是一个局部变量的名称。 var 关键字声明局部变量。您将onload 的值设置为testObj.init,这是一个将“g​​oogle”打印到控制台的函数。

        要让它在页面加载时运行函数,请将window.onload 设置为函数的值。

        window.onload = testObj.init;
        

        或者,更好的是,使用event handlers 将“onload”事件附加到window 对象。 (为使这更容易,请使用 JavaScript 库,例如 jQuery,但我建议您先了解它是如何工作的。)

        【讨论】:

          【解决方案6】:

          没有记录任何内容,因为您只是将onload 设置为指向函数testObj.init 的指针,该函数仅获取函数的代码。要真正运行它,你必须调用testObj.init()



          更多关于 onload...

          onload 是 HTML 元素的属性,可以设置为运行 javascript。例如:

          <html>…
          … <body onload="testObj.init()"> …
          …</html>
          

          这意味着当“body”元素被加载时,函数testObj.init()被运行。


          “onload”属性也可以通过javascript附加,如:

          window.onload=myFunction();
          

          【讨论】:

          • 是的——“onload”在你的例子中是一个独立的变量。
          • 你说的都是真的,但是你没有回答OP的问题。
          • 感谢musicfreak指出这一点,我的思路一时没了……呵呵
          猜你喜欢
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-28
          • 1970-01-01
          • 2011-04-28
          相关资源
          最近更新 更多