2012-06-11 49 views
0

我創建了一個插件,但想確定我是如何處理「本地」函數的。jquery插件中的本地方法和名稱空間

這裏是示意我所做的:

(function($) { 

var methods = { 
    init : function(options) { 

     // CODE ... 

     // Call of a local function 
     _test(this); 

     // CODE ..... 

    }, 
    destroy : function() {  
     // CODE ..... 
     _test(this); 
     // CODE ..... 
    } 
    }; 

    function _test(container) { 
     // My code : example : 
     $(container).append("<div id='myplugin'></div>"); 
    } 

$.fn.myplugin = function(method) { 

    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } 
    else if (typeof method === 'object' || ! method) { 
     return methods.init.apply(this, arguments); 
    } 
    else { 
     $.error('Method ' + method + ' does not exist on jQuery.myplugin'); 
    }  

    }; 

})(jQuery); 

正如你所看到的,我不直接插入代碼的方法的功能,但在其他_functions。 _functions可以被認爲是插件的本地或私人功能嗎?我不會成功地將它們稱爲插件外,所以它似乎可以被認爲是私人函數...

我是否總是將我的代碼直接放在方法對象的函數中? 如何聲明將在幾種方法中使用的函數?

那麼命名空間呢?不太明白。

謝謝!

回答

0

由於您公開方法對象的所有方法,該對象的任何部分都不會是私有的。然而,在另一個函數中聲明的任何函數都是聲明函數的作用域,所以如果你沒有以其他方式使該函數可訪問,那麼它將是私有的。

+0

我不確定要了解什麼。 – bastien

+0

@bastien你不瞭解哪些部分? –

+0

我明白聲明函數內部的函數是私有的。我的方法對象的方法是公開的,以便在我的網頁代碼中調用。但是,我不明白爲什麼我在方法對象的方法中調用的函數不是私有的......我認爲從插件外部直接調用它們是不可能的。此外,如果我想在方法對象的多個方法中使用函數,解決方案是什麼? – bastien