myFunction.init() 是“不是函数” - 我怎样才能启动jquery代码?

发布于 2024-11-03 05:58:55 字数 503 浏览 1 评论 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();  
});

i cannot find the right way to start the script. I have several variables, so the function when the document is ready, then the variable myFunction, and loadIMG, etc. and at the end of the code, the call to myFunction.init(), but Firebug tells me "myFunction.init() is not a function" . How could i start it the right way?
Thanks for any help :

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

另类 2024-11-10 05:58:55

如果您想将 myFunction 视为构造函数,您需要执行以下两件事之一。

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

    var myFunction = (function() {   
        var init = 函数() {  
            加载IMG();     
        },  
        加载IMG = 函数() {  
            ETC。  
        //...  
        返回 {
            “初始化”:初始化
        };
    })();
    
  2. 实际上创建一个构造函数并使用new关键字。将任何公共方法/变量分配为 this 的属性。

    var myFunction = new (function() {   
        this.init = 函数() {  
            加载IMG();     
        };
        var loadIMG = 函数() {  
            ETC。  
        //...
    })();
    

If you want to treat myFunction as a constructor, you need to do one of two things.

  1. Return an object with the methods you want.

    var myFunction = (function() {   
        var init = function() {  
            loadIMG();     
        },  
        loadIMG = function() {  
            etc.  
        //...  
        return {
            "init": init
        };
    })();
    
  2. Actually make a constructor and use the new keyword. Allocate any public methods/variables as properties on this.

    var myFunction = new (function() {   
        this.init = function() {  
            loadIMG();     
        };
        var loadIMG = function() {  
            etc.  
        //...
    })();
    
静若繁花 2024-11-10 05:58:55

您正在评估匿名函数,因为您正在编写 (function () {})() 而不仅仅是 function () {},这是一个错误吗?如果不是,匿名函数是否返回一个新函数?检查typeof myFunction以查看它是否确实是“function”

You are evaluating the anonymous function since you are writing (function () {})() instead of just function () {}, is that a mistake? If not, does the anonymous function return a new function?. Check typeof myFunction to see if it is indeed "function"

夏日落 2024-11-10 05:58:55

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

如果您想在尝试访问的位置访问它,则需要在函数外部声明 myFunction,如下所示:

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

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

You're trying to access your function outside of the scope it's visible in. Since you've declared the myFunction variable INSIDE the $(function(){}) it is only visible in that scope.

If you want to access it at the point where you are trying to, you'll need to declare myFunction outside of the function as such:

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

Then you can refer to myFunction anywhere in the script.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文