最好的方法就是使用“域”!
域是一个比较形象的说法,其实并并不是js里面的一个特殊关键字之类的东西。相反他是使用类实现的。
如下是一个类的代码:
function class () {
...
}
同样一个匿名的类的写法如下:
function () {
...
}
这样声明了一个名为class的类。调用的时候就如下:
var c = new class();
连在一起就是如下代码:
window.className = (function() {
...
}) ();
这样实际上就是一个全局域className.
这样我们在这域中设置变量,函数甚至是类都不大可能会与开发者的命名冲突。
另外还有另一种使用域的方法:
这是jQuery的形式:
(function() {
var _jQuery = window.jQuery;
var _$ = window.$;
var jQuery = window.jQuery = window.$ = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
};
......
......
})();
这样定义的变量属于一个匿名的域里面而不会产生冲突。
jQuery的插件也为了避免$产生冲突定义了如下代码:
(function($) {
......
})(jQuery);
这样吧jQuery传入函数,得到$的表示,很巧妙!
PS:Javascript真的是我用过的最巧妙的语言,所以也比起一般的语言要用的融会贯通的话真的难一点
没有评论:
发表评论