天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Prototype 學習 Prototype對象

環(huán)境:
Prototype Version: '1.6.1_rc3'
Aptana Studio, build: 1.2.5.023247
IE7
FF2.0.0.4
Opera 10 beta
復制代碼 代碼如下:
var Prototype = {
Version: '1.6.1_rc3',
//定義瀏覽器對象
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對象
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對象是通過調(diào)用匿名函數(shù)并且立即執(zhí)行的方式返回的,執(zhí)行匿名函數(shù)的方法有三種:
1. (function(){return 1})() //()可以強制求值,返回函數(shù)對象然后執(zhí)行函數(shù)
2. (function(){return 1}()) //返回函數(shù)執(zhí)行的結果
3. void function(){alert(1)}() //void 也有強制運算的用法
其中判斷Opera的方法isOpera用到了window.opera,在Opera瀏覽器中會返回一個對象,其它瀏覽器返回undefined
BrowserFeatures對象主要判斷瀏覽器的一些特性,F(xiàn)F支持許多的特性在IE下不支持,比如document.evalute方法就可以通過XPATH的方式操作HTML文檔,但IE就不支持。
此函數(shù)詳細用法如下:
復制代碼 代碼如下:
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__這個在FF下可以取得對象的prototype對象,即對象的原型。這也是Javascript繼承機制的基礎,基于原型的繼承,不像通常的C++,Java,C#語言的基于類的繼承。還有一種metaclass的繼承方式,在ruby和Python中常有應用
其中ScriptFragment定義網(wǎng)頁中引用腳本的正則表達式
JSONFilter:還是引用prototype原文的解釋更清楚他的用法――
復制代碼 代碼如下:
/*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就是返回第一個參數(shù)的方法:
復制代碼 代碼如下:
Prototype.K('hello world!'); // -> 'hello world!'
Prototype.K(1.5); // -> 1.5
Prototype.K(Prototype.K); // -> Prototype.K

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

JavaScript技術Prototype 學習 Prototype對象,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 菠萝菠萝蜜视频在线看1 | 国产午夜伦鲁鲁 | 快穿做妓女好爽H | 久久精视频 | 欧美性狂猛bbbbbbxxxx | 啪啪后入内射日韩 | 大学生第一次破女在线观看 | 岛国片在线看 | 337p欧洲亚大胆精品 | 最近中文字幕免费高清MV视频 | 国产午夜一级淫片 | 草莓视频在线观看免费观看高清 | 熟妇的味道HD中文字幕 | 99久久精品国产一区二区三区 | 在线亚洲97se | 国产亚洲精品成人a在线 | 国产女人与黑人在线播放 | videos gratis欧美另类 | 伊人久久大香线蕉观看 | 国产精品乱人无码伦AV在线A | 粉嫩无套白浆第一次jk | 亚洲AV 日韩 国产 有码 | 色美妞论坛 | 嗯 用力啊 嗯 c我 啊哈老师 | 365电影成人亚洲网在线观看 | 99久久精品毛片免费播放 | 狠狠色色综合网站 | 久久精品国产亚洲AV忘忧草蜜臀 | 夜夜国产亚洲视频香蕉 | 久久免费高清 | 国产精片久久久久久婷婷 | 免费果冻传媒2021在线观看 | 99久久免费热在线精品 | 2020亚洲色噜噜狠狠网站 | 成人天堂婷婷青青视频在线观看 | 暖暖在线观看播放视频 | 国产成人精品视频播放 | 我与旗袍老师疯狂床震 | 欧美在线看费视频在线 | 久久亚洲精品2017 | 精品国产在线国语视频 |