0


我找不到启动脚本的正确方法。我有几个变量,所以文件准备好时的函数,然后是变量myFunction和loadIMG等,在代码的最后,调用myFunction.init(),但Firebug告诉我“myFunction.init( ) 不是函数”。我怎样才能以正确的方式开始呢?谢谢你的帮助 :

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

3 回答 3

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.  
        //...
    })();
    
于 2011-04-22T23:42:42.800 回答
0

您正在评估匿名函数,因为您正在编写(function () {})()而不是只是function () {},这是一个错误吗?如果不是,匿名函数是否返回一个新函数?看看typeof myFunction是不是真的"function"

于 2011-04-22T23:36:15.520 回答
0

您正在尝试在可见范围之外访问您的函数。由于您已在 $(function(){}) 内部声明了 myFunction 变量,因此它仅在该范围内可见。

如果你想在你试图访问它的地方访问它,你需要在函数之外声明 myFunction :

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

然后您可以在脚本中的任何位置引用 myFunction。

于 2011-04-22T23:39:05.853 回答