命名空间作用就不赘述了,大家应该也都很熟悉了。
我们先来看看各个框架是如何实现自己的命名空间的,都很有各自的特点,但总得来说大同小异,我们挨个来分析一下。
注:采用的框架版本:prototype-1.6.1, mootools-1.2.4, jquery-1.4.2, ext-3.2.0, yui-3.1.0, dojo-1.4.2
var Prototype = { Version : '1.6.1', // ... };
var MooTools = { 'version' : '1.2.4', 'build' : '0d9113241a90b9cd5643b926795852a2026710d4' };
同上,注意要符合规范,不要漏掉最后的引号。
(function(window, undefined) { var jQuery = function(selector, context) { // ... } // ... window.jQuery = window.$ = jQuery; })(window);
Ext = { version : '3.2.0' };
没啥可圈可点的,约等同于prototype的模式,唯一的区别是var 声明的是readable, writable,这种再加一个 deletable。
(function() { // ... if (typeof YUI === 'undefined' || !YUI) { YUI = function(o1, o2, o3, o4, o5) { var Y = this, a = arguments, i, l = a.length; if (!(Y instanceof YUI)) { return new YUI(o1, o2, o3, o4, o5); } else { // ... return Y; } }; } // ... })();
(function() { // ... if (typeof dojo == "undefined") { dojo = { _scopeName : "dojo", // ... }; } // ... })();
通过以上的代码,我们可以总结出以下几点:
通过对高手的代码学习解析,能从中提高一星半点对js的掌握。
个人评价:
prototype,mootools,ext:★
dojo:★★
yui:★★★
jquery:★★★☆