2011-04-22 44 views
0


我无法找到启动脚本的正确方法。我有几个变量,所以当文档准备就绪时,然后变量myFunction和loadIMG等,并在代码结束时调用myFunction.init(),但Firebug告诉我“myFunction.init( )不是一个功能“。我怎么能以正确的方式开始呢? 感谢您的帮助:myFunction.init()是“不是一个函数” - 我如何启动jQuery代码?

$(function() { 
    //... 
    var myFunction = (function() { 
     var init = function() { 
      loadIMG();  
     }, 
     loadIMG = function() { 
      etc. 
     //... 
     //then at the end of the page : 
    })(); /* myFunction */ 
    myFunction.init(); 
}); 

回答

1

如果你想把myFunction作为构造函数,你需要做两件事情之一。

  1. 用你想要的方法返回一个对象。

    var myFunction = (function() { 
        var init = function() { 
         loadIMG();  
        }, 
        loadIMG = function() { 
         etc. 
        //... 
        return { 
         "init": init 
        }; 
    })(); 
    
  2. 其实做一个构造函数并使用new关键字。在this上分配任何公共方法/变量作为属性。

    var myFunction = new (function() { 
        this.init = function() { 
         loadIMG();  
        }; 
        var loadIMG = function() { 
         etc. 
        //... 
    })(); 
    
+0

非常感谢,返回工作就好了!为什么我们需要指定回报?我想我对此有点困惑 – Paul 2011-04-23 00:37:58

0

,因为你正在写(function() {})(),而不是仅仅function() {}您正在评估匿名函数,是一个错误?如果没有,匿名函数是否会返回一个新函数?检查typeof myFunction以确定它是否确实是"function"

+0

,谢谢,我试图添加成功“回归”,还是要谢谢你 – Paul 2011-04-22 23:51:22

0

您试图访问您的函数,因为它的可见范围之外。由于您声明了myFunction变量INSIDE $(function(){}),它只是在该范围内可见。

如果你想在您正试图将指向访问它,你需要的功能外声明myFunction的这样:

var myFunction; 
$(function() { 
    //... 
    myFunction = (function() { 
... 

的话可以参考给myFunction在脚本中任何。

+0

,谢谢,我试图添加成功“回归”,还是要谢谢你 – Paul 2011-04-22 23:50:59