且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Prototype1.5.1源代码解读分析-2

更新时间:2022-03-15 00:06:59

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
语法

这段代码用到的语法:

什么是对象?对象是一种复合数据类型,他们将多个数据值集中在一个单元中,而且允许使用名字来存取这些值。解释对象的另一种方式是,对象是一个无序的属性集合,每个属性都有自己的名字和值。存储在对象中的已命名的值既可以是数字和字符串这样的原始值,也可以是对象。Javascript对象本质上一个化装了的关联数组,由以名字作为键的字段和方法组成。对象是由运算符new创建的。在这个运算符之后必须有用于初始化对象的构造函数名。创建一个新的javascript对象的最简单的方法是调用object内建的构造函数:

var myObject=new Object;

使用JSON.JSON是语言的一个核心特征,他提供了一种创建数组和对象图(object graph)的简单机制。为了理解JSON,需要知道javascript是如何工作的。我们首先来讨论一些关于他们的基础知识。Javascript有一个内建的array类,可以使用new关键字初始化:

var book=new Array();

数组有按照数字来分配的值,就像C和JAVA的数组一样:

book[4]=”100个感动中国的自考人”

数组也可以使用一个健值来关联,就像JAVA的map一样。实际上这可以用于任何javascript对象:

book[“BestSeller”]=”100个感动中国的自考人”

创建一个数字索引的数组的快捷方法是使用方括号,将所有的成员写成一个用用逗号分隔的值的列表,就像这样:

book=[“ajax基础”,”ajax实战”,”ajax黑客”]

为了创建javascript对象,我们将对象属性说明放在大括号中,其中的属性说明由逗号隔开。对象直接量中每个属性说明都由属性名加上冒号和属性值构成。例如:

book={

BestSeller:”100个感动中国的自考人”,

cookbook:”湘菜烹制大全”

}

函数直接量是用关键字function后加可选的函数名、用括号括起来的参数列表和用花括号括起来的函数体定义的。简言之,函数直接量看起来就像个函数定义,只不过没有函数名。他们之间最大的差别是函数直接量可以出现在其他javascript表达式中。例如:

var square=function(x){return x*x}

代码解析及其使用方法

下面我们来解析prototype第一段代码。好长的一段代码,为了便于理解,让我们把这段代码简化一下----略去其中的部分细节:

var Prototype = {

  Version: '1.5.1',

  Browser: {

   值

  },

  BrowserFeatures: {

   值

  },

  ScriptFragment: '<script[^>]*>([\u0001-\uFFFF]*?)</script>',

  JSONFilter: /^\/\*-secure-\s*(.*)\s*\*\/\s*$/,

  emptyFunction: function() { },

  K: function(x) { return x }

}

这段代码的意思就是创建了一个名字为Prototype的对象。该对象有七个属性:Version, Browser,BrowserFeatures,ScriptFragment,JSONFilter,emptyFunction,K

Version

Version(版本)属性的值为“1.5.1”,表示当前版本是1.5.1。

Browser

Browser属性的值是一个对象。该对象是:

{

    IE:     !!(window.attachEvent && !window.opera),

    Opera:  !!window.opera,

    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,

    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1

  }

作用是嗅探当前使用的所使用的浏览器。让我们来看看在prototypeAPI文档(下文简称文档)是怎样描述该属性的:

Detects the current browser and returns an object

Possible Tests:

Prototype.Browser.IE

Prototype.Browser.Opera

Prototype.Browser.WebKit // Safari

Prototype.Browser.Gecko  

Examples

  

In case you are viewing in Mozilla:  

Prototype.Browser

//-> Object: IE=false Opera=false WebKit=false Gecko=true

if(Prototype.Browser.Gecko) {

   alert("It's a Gecko!")

}

译文:

作用:探测当前的浏览器并返回一个对象

允许的测试:

Prototype.Browser.IE

Prototype.Browser.Opera

Prototype.Browser.WebKit // Safari

Prototype.Browser.Gecko  

例子

万一你正在观察Mozilla浏览器

Prototype.Browser

//-> 对象: IE=false Opera=false WebKit=false Gecko=true

if(Prototype.Browser.Gecko) {

   alert("It's a Gecko!")

}

本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2007/08/16/2912306.html  ,如需转载请自行联系原作者