中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

Prototype 學(xué)習(xí) Prototype對(duì)象

環(huán)境:
Prototype Version: '1.6.1_rc3'
Aptana Studio, build: 1.2.5.023247
IE7
FF2.0.0.4
Opera 10 beta
復(fù)制代碼 代碼如下:
var Prototype = {
Version: '1.6.1_rc3',
//定義瀏覽器對(duì)象
Browser: (function(){
var ua = navigator.userAgent;
var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
return {
IE: !!window.attachEvent && !isOpera,
Opera: isOpera,
WebKit: ua.indexOf('AppleWebKit/') > -1,
Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,
MobileSafari: /Apple.*Mobile.*Safari/.test(ua)
}
})(),
//定義瀏覽器Feature對(duì)象
BrowserFeatures: {
XPath: !!document.evaluate,
SelectorsAPI: !!document.querySelector,
ElementExtensions: (function() {
var constructor = window.Element || window.HTMLElement;
return !!(constructor && constructor.prototype);
})(),
SpecificElementExtensions: (function() {
if (typeof window.HTMLDivElement !== 'undefined')
return true;
var div = document.createElement('div');
var form = document.createElement('form');
var isSupported = false;
if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {
isSupported = true;
}
div = form = null;
return isSupported;
})()
},
ScriptFragment: '<script[^>]*>([//S//s]*?)<//script>',
JSONFilter: /^///*-secure-([/s/S]*)/*///s*$/,
emptyFunction: function() { },
K: function(x) { return x }
};
if (Prototype.Browser.MobileSafari)
Prototype.BrowserFeatures.SpecificElementExtensions = false;

Broswer對(duì)象是通過(guò)調(diào)用匿名函數(shù)并且立即執(zhí)行的方式返回的,執(zhí)行匿名函數(shù)的方法有三種:
1. (function(){return 1})() //()可以強(qiáng)制求值,返回函數(shù)對(duì)象然后執(zhí)行函數(shù)
2. (function(){return 1}()) //返回函數(shù)執(zhí)行的結(jié)果
3. void function(){alert(1)}() //void 也有強(qiáng)制運(yùn)算的用法
其中判斷Opera的方法isOpera用到了window.opera,在Opera瀏覽器中會(huì)返回一個(gè)對(duì)象,其它瀏覽器返回undefined
BrowserFeatures對(duì)象主要判斷瀏覽器的一些特性,F(xiàn)F支持許多的特性在IE下不支持,比如document.evalute方法就可以通過(guò)XPATH的方式操作HTML文檔,但I(xiàn)E就不支持。
此函數(shù)詳細(xì)用法如下:
復(fù)制代碼 代碼如下:
var xpathResult = document.evaluate(xpathExpression, contextNode, namespaceResolver, resultType, result);

The evaluate function takes a total of five arguments:
xpathExpression: A string containing an xpath expression to be evaluated
contextNode: A node in the document against which the Xpath expression should be evaluated
namespaceResolver: A function that takes a string containing a namespace prefix from the xpathExpression and returns a string containing the URI to which that prefix corresponds. This enables conversion between the prefixes used in the XPath expressions and the (possibly different) prefixes used in the document
resultType: A numeric constant indicating the type of result that is returned. These constants are avaliable in the global XPathResult object and are defined in the relevaant section of the XPath Spec. For most purposes it's OK to pass in XPathResult.ANY_TYPE which will cause the results of the Xpath expression to be returned as the most natural type
result:An existing XPathResult to use for the results. Passing null causes a new XPathResult to be created.
其中__proto__這個(gè)在FF下可以取得對(duì)象的prototype對(duì)象,即對(duì)象的原型。這也是Javascript繼承機(jī)制的基礎(chǔ),基于原型的繼承,不像通常的C++,Java,C#語(yǔ)言的基于類(lèi)的繼承。還有一種metaclass的繼承方式,在ruby和Python中常有應(yīng)用。
其中ScriptFragment定義網(wǎng)頁(yè)中引用腳本的正則表達(dá)式
JSONFilter:還是引用prototype原文的解釋更清楚他的用法――
復(fù)制代碼 代碼如下:
/*String#evalJSON internally calls String#unfilterJSON and automatically removes optional security comment delimiters (defined in Prototype.JSONFilter).*/

person = '/*-secure-/n{"name": "Violet", "occupation": "character"}/n*/'.evalJSON() person.name; //-> "Violet"

/*You should always set security comment delimiters (/*-secure-/n...*/) around sensitive JSON or JavaScript data to prevent Hijacking. (See this PDF document for more details.)*/

Prototype.K就是返回第一個(gè)參數(shù)的方法:
復(fù)制代碼 代碼如下:
Prototype.K('hello world!'); // -> 'hello world!'
Prototype.K(1.5); // -> 1.5
Prototype.K(Prototype.K); // -> Prototype.K

說(shuō)明一下JavaScript里面的靜態(tài)方法和實(shí)例方法
靜態(tài)方法要這樣擴(kuò)展:
Date.toArray=function(){}
那么toArray方法就是Date的靜態(tài)方法,不能這樣調(diào)用(new Date()).toArray();否則會(huì)拋出異常
要這樣用:Date.toArray()
實(shí)例方法要這樣擴(kuò)展:
Date.prototype.toArray2=function(){}
那么toArray2方法就是Date的實(shí)例方法了,不能這樣調(diào)用Date.toArray2();
要這樣用:(new Date()).toArray2()

JavaScript技術(shù)Prototype 學(xué)習(xí) Prototype對(duì)象,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美日韩一区在线播放 | 亚洲精品在线播放 | 亚洲乱码一区二区三区在线观看 | 99精品国产一区二区三区 | 人人做人人澡人人爽欧美 | 欧美激情欧美激情在线五月 | 日韩欧美国产精品 | 亚洲国产高清免费 | 涩涩视频在线播放 | 日韩av一区二区在线观看 | 最新国产视频 | 国产免费看 | 久久久精品网 | 亚洲欧美日韩久久 | 久久福利电影 | 日韩一区在线视频 | 狠狠操狠狠干 | 国产乱人伦精品一区二区 | 亚洲精品国产一区 | 女同av亚洲女人天堂 | 成人三级av | 在线一区二区三区 | 亚洲一区二区在线播放 | 91视频在线观看 | 国产高潮好爽受不了了夜夜做 | 黑人精品xxx一区一二区 | 日韩一区二区在线视频 | 在线观看www | 国产精品乱码一区二区三区 | 国产精品成人一区二区三区 | 日日夜夜精品免费视频 | 久久久91精品国产一区二区三区 | 日韩av一区二区在线观看 | 在线观看av网站永久 | 色婷婷激情综合 | 爱综合 | 亚洲风情在线观看 | 久久久久中文字幕 | 日本成人中文字幕在线观看 | 国产精品国产 | 久久亚洲欧美日韩精品专区 |