prototype1.5 初體驗(yàn)第1/2頁
一直沒有沒有時(shí)間看prototype,現(xiàn)在好了,已經(jīng)更新到了1.5 pre1,呵呵,強(qiáng)大的功能不得不學(xué)習(xí)啊,這個(gè)是提升自己JS能力的又一個(gè)捷徑.
1. Prototype是什么?
或許你還沒有用過它, prototype.js 是一個(gè)由Sam Stephenson寫的JavaScript包。這個(gè)構(gòu)思奇妙編寫良好的一段兼容標(biāo)準(zhǔn)的一段代碼將承擔(dān)創(chuàng)造胖客戶端, 高交互性WEB應(yīng)用程序的重?fù)?dān)。輕松加入Web 2.0特性。
如果你最近體驗(yàn)了這個(gè)程序包,你很可能會(huì)發(fā)現(xiàn)文檔并不是它的強(qiáng)項(xiàng)之一。像所有在我之前的開發(fā)者一樣,我只能一頭扎進(jìn)prototype.js的源代碼中并且試驗(yàn)其中的每一個(gè)部分。 我想當(dāng)我學(xué)習(xí)他的時(shí)候記寫筆記然后分享給其他人將會(huì)很不錯(cuò)。
我也一起提供了這個(gè)包的對(duì)象,類,方法和擴(kuò)展的 非官方參考 。
2. 通用性方法
這個(gè)程序包里面包含了許多預(yù)定義的對(duì)象和通用性方法。編寫這些方法的明顯的目的就是為了減少你大量的重復(fù)編碼和慣用法。
從Prototype1.5.x版本開始,你可以更方便的如下面代碼一樣操作DOM對(duì)象了:
var ele = $("myelement");
ele.hide(); //隱藏DOM對(duì)象對(duì)比從前的版本var ele = $("myelement");
Element.hide(ele); //隱藏DOM對(duì)象
這樣的改變有什么益處呢? 我覺得一來是更面向?qū)ο罅?,二來就是便于將來IDE里的代碼提示。
2.1. 使用 $()方法
$() 方法是在DOM中使用過于頻繁的 document.getElementById() 方法的一個(gè)便利的簡寫,就像這個(gè)DOM方法一樣,這個(gè)方法返回參數(shù)傳入的id的那個(gè)元素。
比起DOM中的方法,這個(gè)更勝一籌。你可以傳入多個(gè)id作為參數(shù)然后 $() 返回一個(gè)帶有所有要求的元素的一個(gè) Array 對(duì)象。下面的例子會(huì)向你描述這些。
<HTML>
<HEAD>
<TITLE> Test Page </TITLE>
<script src="prototype-1.3.1.js"></script>
<script>
function test1()
{
var d = $('myDiv');
alert(d.innerHTML);
}
function test2()
{
var divs = $('myDiv','myOtherDiv');
for(i=0; i<divs.length; i++)
{
alert(divs[i].innerHTML);
}
}
</script>
</HEAD>
<BODY>
<div id="myDiv">
<p>This is a paragraph</p>
</div>
<div id="myOtherDiv">
<p>This is another paragraph</p>
</div>
<input type="button" value=Test1 onclick="test1();"><br>
<input type="button" value=Test2 onclick="test2();"><br>
</BODY>
</HTML>
這個(gè)方法的另一個(gè)好處就是你可以傳入id字符串或者元素對(duì)象自己,這使得在創(chuàng)建可以傳入任何形式參數(shù)的方法的時(shí)候, 它變得非常有用。
2.2. 使用$F()方法
$F()方法是另一個(gè)非常受歡迎的簡寫。它可以返回任何輸入表單控件的值,如文本框或下拉框。 這個(gè)方法可以傳入元素的id或者元素自己。
<script>
function test3()
{
alert( $F('userName') );
}
</script>
<input type="text" id="userName" value="Joe Doe"><br>
<input type="button" value=Test3 onclick="test3();"><br>
2.3. 使用Try.these()方法
Try.these() 方法使得實(shí)現(xiàn)當(dāng)你想調(diào)用不同的方法直到其中的一個(gè)成功正常的這種需求變得非常容易, 他把一系列的方法作為參數(shù)并且按順序的一個(gè)一個(gè)的執(zhí)行這些方法直到其中的一個(gè)成功執(zhí)行,返回成功執(zhí)行的那個(gè)方法的返回值。
在下面的例子中, xmlNode.text在一些瀏覽器中好用,但是xmlNode.textContent在另一些瀏覽器中正常工作。 使用Try.these()方法我們可以得到正常工作的那個(gè)方法的返回值。
<script>
function getXmlNodeValue(xmlNode){
return Try.these(
function() {return xmlNode.text;},
function() {return xmlNode.textContent;)
);
}
</script>
相關(guān)文章
Prototype Object對(duì)象 學(xué)習(xí)
該不是一個(gè)概念。因?yàn)镃#中的命名空間后面不會(huì)直接跟方法,肯定是接一個(gè)對(duì)象然后在調(diào)用方法,不過和C++中的命名空間倒是有些類似2009-07-07Prototype Template對(duì)象 學(xué)習(xí)
這里的Template對(duì)象其實(shí)就是格式化字符串的工具,就像java中的String.format方法。這個(gè)對(duì)象只提供一個(gè)方法evaluate。2009-07-07Prototype Class對(duì)象學(xué)習(xí)
Prototype’s object for class-based OOP.prototype OOP編程的基礎(chǔ),詳細(xì)說明一下源碼2009-07-07Prototype RegExp對(duì)象 學(xué)習(xí)
幫助文檔上沒有這個(gè)對(duì)象,實(shí)際上源代碼中這個(gè)對(duì)象還是有方法的,就1靜態(tài)方法,作用也不是很大,這里簡單說一下,因?yàn)橐院蠼榻B別的對(duì)象時(shí)會(huì)用到這個(gè)RegExp2009-07-07Prototype Hash對(duì)象 學(xué)習(xí)
這個(gè)對(duì)象相當(dāng)于Java中的HashMap,當(dāng)然了功能沒HashMap那么強(qiáng)大。提供一直基本的方法,簡單的方法就不在源碼中注釋了。2009-07-07由prototype_1.3.1進(jìn)入javascript殿堂-類的初探
由prototype_1.3.1進(jìn)入javascript殿堂-類的初探...2006-11-11Prototype 學(xué)習(xí) 工具函數(shù)學(xué)習(xí)($方法)
$方法——被成為瑞士軍刀$方法使用技巧。2009-07-07Prototype String對(duì)象 學(xué)習(xí)
這個(gè)對(duì)象里面的方法就是提供了一些字符串操作的工具方法,比較重要的gsub方法,下面做了詳細(xì)的注釋,簡單的方法就不說了,一看就明白了。2009-07-07