天天看點

Prototype1.5.1源代碼解讀分析-2

< 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!")

譯文:

作用:探測目前的浏覽器并傳回一個對象

允許的測試:

例子

萬一你正在觀察Mozilla浏覽器

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

本文轉自 netcorner 部落格園部落格,原文連結:http://www.cnblogs.com/netcorner/archive/2007/08/16/2912306.html  ,如需轉載請自行聯系原作者