详解Javascript框架中的全局变量

开发 前端
本文将介绍Javascript框架中的全局变量,简单的代码。希望通过本文,能让大家对全局变量有个全新的认识。

对于Javascript框架,大家还是比较理解的。对于Javascript框架中的全局变量,大家还是要仔细的思考,这样才能在开发过程中达到事半功倍的效果。

纵观各大类库的实现,一开始基本都是定义一个全局变量,然后对它进行扩展。如Prototype.js的Prototype,mootools的Native,Base2的Base,Ext的Ext,JQuery的JQuery,YUI的YUI,dojo的dojo,MochiKit的MochiKit等等。从全局变量的污染程度来看,分为两大类,Prototype,mootools与Base2归一类。Prototype的哲学是对JS原生对象进行扩展。早些年,Ptototype差点成为事实的标准,因此基本没有考虑到与其他库的共存问题。基于Prototype,也发展出诸如script.aculo.us,rico,Plotr,ProtoChart,Scripty2等非常优秀的类库以及一大堆收费插件,非JQuery那一大堆垃圾插件所能比拟的。不过,有点渊源的插件几乎与Prototype有关,如著名的lightbox。mootools是Prototype的升级版,更加OO,全面复制其API。Base则是想修复IE的Bug,让IE拥有标准浏览器的API,因此也把所有原生对象污染一遍。

剩下几个大类库就奉行非侵入的原则,尽量减少全局变量。如Ext还有更多小型类库,它会选择一个自定义对象(其实也是window的一个自定义属性),然后对它的属性进行扩展。基本思路是

  1. Ext = {};   
  2. Ext.Element= function(){}   
  3. Ext.DomQuery = function(){}   
  4. Ext.DomHelper = function(){} 

jQuery也是一个window自定义属性,而且从一开始就污染了两个(JQurey与$),因此一旦其他类库占用了$,它就退回用JQuery。它与Ext最大的不同的是。它是一个函数对象(Function),而不是一个纯对象(Object)。它的所有扩展都是基于它的JQuery.fn即JQuery.prototype。其他可能暴露出来的变量都收到闭包与函数中。

dojo上来就来就构建它无拟伦比的包机制。整个命名空间都是由eval生成,然后再慢慢往dojo上添加属性,情况同Ext。不过,它的设计是我见过的类库中最复杂的,涉及的领域也非常广泛,搞到代码量达到惊人的9千行(兼注释)。

MochiKit不知是不是从dojo中派生出来,没怎么研究。但它的组织形式与Ext与dojo很相似。

YUI与JQuery很相似,是一个函数对象,只不过它后面就没有像JQuery那么疯狂,什么都往原型中加。无疑,YUI与JQuery的理念是非常新颖的,函数比对象更能玩出花样,起码做链式操作也轻松性。但JQuery一开始就瞄准页面的那个DOM元素,而YUI,dojo,Ptototype,mootools等具有强大继承机制的,更乐意创建一个类,这就是JQuery在UI怎么也比不上它的前辈的原因。另外,YUI的作者们在CSS,HTML也造诣极深,因此其UI设计是非常值得学习的。

原文标题:javascript框架之全局变量

链接:http://www.cnblogs.com/rubylouvre/archive/2009/11/05/1596501.html

责任编辑:彭凡 来源: 博客园
相关推荐

2013-07-17 16:16:06

Android全局变量定义全局变量Application

2010-11-12 10:08:55

SQL Server全

2010-09-08 17:25:17

SQL全局变量

2010-02-01 14:28:37

Python全局变量

2009-12-09 17:07:08

PHP unset全局

2015-01-07 14:41:32

Android全局变量局部变量

2017-02-08 12:28:37

Android变量总结

2010-03-09 14:12:55

Python全局变量

2013-07-25 15:15:26

iOS开发学习iOS全局变量

2009-09-24 09:28:00

Scala讲座全局变量scala

2011-08-23 13:54:10

LUA全局变量

2013-07-22 14:07:47

2020-07-20 12:43:31

Go变量命名

2014-06-23 10:25:12

2009-12-04 13:14:19

PHP Global变

2009-12-04 13:31:21

PHP全局变量不能生效

2021-02-26 13:42:01

函数全局变量

2022-04-12 11:38:06

C语言全局变量

2022-11-28 11:15:20

Tomcat回显方式

2020-11-09 14:10:38

Bug安全代码
点赞
收藏

51CTO技术栈公众号