YUI有一个很好的方法,可以在javascript中为你的方法等创建一个命名空间。
jQuery有没有类似的东西?
发布于 2013-05-30 20:16:59
这是我为我的插件创建名称空间的方式:
(function ($) {
// do not overwrite the namespace, if it already exists
$.MyNamespace = $.MyNamespace || {};
$.MyNamespace.MyPlugin = function () {/*here's the logic*/}
})($);
然后:
$.MyNamespace.MyPlugin ();
发布于 2009-02-09 04:05:08
jQuery有一堆扩展基本功能的插件。对于简单的名称空间,有this plugin。
发布于 2011-09-21 09:55:44
如果您想以这种方式使用jQuery:
$("*").namespace.do();
那么目前还没有插件可以做到这一点。(我找不到John Resig的jquery.space插件和Gilberto Saraiva插件,前者在jQuery 1.4中显然无法正常工作,后者显然没有达到预期的效果)。我很乐意看一看John的函数,看看它为什么停止工作,以及可以做些什么来使它工作,坦率地说,这将是创建整洁名称空间的最佳方法。
根据http://malnotna.wordpress.com/2009/01/12/jquery-namespace-support/,另一种方法是将名称空间设置为(使用Ariel Flesler的jQuery.Modularize ):
$("*").namespace().do()
但是这样的语法并不“漂亮”。我们还将结果从一个函数传递到另一个函数。
我创建名称空间的方法不是将名称空间放在末尾,而是放在$的开头,因此我们的$('*').namespace语法为:
$.namespace("*").do()
奇怪的是,我不知道为什么没有提到这种方法,因为它很容易让您在不覆盖现有函数的情况下创建无冲突的名称空间(通过使用$.sub())。而且,让它工作不需要任何东西。所以:
(function($){
$.namespace = $.sub();
$.fn.test = function(){ return 1 };
$.namespace.fn.test = function() { return 2};
})(jQuery);
console.log($('*').test(), $.namespace('*').test());
你已经准备好出发了。
https://stackoverflow.com/questions/527089
复制相似问题