myFunction.init () - это не функция - как я могу запустить код jquery? - PullRequest
0 голосов
/ 23 апреля 2011


я не могу найти правильный способ запустить скрипт. У меня есть несколько переменных, поэтому функция, когда документ готов, затем переменная 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();  
});

Ответы [ 3 ]

1 голос
/ 23 апреля 2011

Если вы хотите рассматривать 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 голосов
/ 23 апреля 2011

Вы пытаетесь получить доступ к своей функции вне области видимости, в которой она видна. Поскольку вы объявили переменную myFunction ВНУТРИ $ (function () {}), она видна только в этой области.

Если вы хотите получить к нему доступ в том месте, где вы пытаетесь, вам нужно объявить myFunction вне функции следующим образом:

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

Тогда вы можете ссылаться на myFunction в любом месте скрипта.

0 голосов
/ 23 апреля 2011

Вы оцениваете анонимную функцию, так как пишете (function () {})() вместо function () {}, это ошибка?Если нет, возвращает ли анонимная функция новую функцию?Проверьте typeof myFunction, чтобы увидеть, действительно ли это "function"

...