prototype1.5 初体验第1/2页

时间:2021-05-26

一直没有没有时间看prototype,现在好了,已经更新到了1.5pre1,呵呵,强大的功能不得不学习啊,这个是提升自己JS能力的又一个捷径.

1.Prototype是什么?
或许你还没有用过它,prototype.js是一个由SamStephenson写的JavaScript包。这个构思奇妙编写良好的一段兼容标准的一段代码将承担创造胖客户端,高交互性WEB应用程序的重担。轻松加入Web2.0特性。

如果你最近体验了这个程序包,你很可能会发现文档并不是它的强项之一。像所有在我之前的开发者一样,我只能一头扎进prototype.js的源代码中并且试验其中的每一个部分。我想当我学习他的时候记写笔记然后分享给其他人将会很不错。

我也一起提供了这个包的对象,类,方法和扩展的非官方参考。

2.通用性方法
这个程序包里面包含了许多预定义的对象和通用性方法。编写这些方法的明显的目的就是为了减少你大量的重复编码和惯用法。

从Prototype1.5.x版本开始,你可以更方便的如下面代码一样操作DOM对象了:
复制代码 代码如下:
varele=$("myelement");
ele.hide();//隐藏DOM对象对比从前的版本varele=$("myelement");
Element.hide(ele);//隐藏DOM对象

这样的改变有什么益处呢?我觉得一来是更面向对象了,二来就是便于将来IDE里的代码提示。

2.1.使用$()方法
$()方法是在DOM中使用过于频繁的document.getElementById()方法的一个便利的简写,就像这个DOM方法一样,这个方法返回参数传入的id的那个元素。

比起DOM中的方法,这个更胜一筹。你可以传入多个id作为参数然后$()返回一个带有所有要求的元素的一个Array对象。下面的例子会向你描述这些。
复制代码 代码如下:
<HTML>
<HEAD>
<TITLE>TestPage</TITLE>
<scriptsrc="prototype-1.3.1.js"></script>

<script>
functiontest1()
{
vard=$('myDiv');
alert(d.innerHTML);
}

functiontest2()
{
vardivs=$('myDiv','myOtherDiv');
for(i=0;i<divs.length;i++)
{
alert(divs[i].innerHTML);
}
}
</script>
</HEAD>

<BODY>
<divid="myDiv">
<p>Thisisaparagraph</p>
</div>
<divid="myOtherDiv">
<p>Thisisanotherparagraph</p>
</div>

<inputtype="button"value=Test1onclick="test1();"><br>
<inputtype="button"value=Test2onclick="test2();"><br>
</BODY>
</HTML>

这个方法的另一个好处就是你可以传入id字符串或者元素对象自己,这使得在创建可以传入任何形式参数的方法的时候,它变得非常有用。

2.2.使用$F()方法
$F()方法是另一个非常受欢迎的简写。它可以返回任何输入表单控件的值,如文本框或下拉框。这个方法可以传入元素的id或者元素自己。
复制代码 代码如下:
<script>
functiontest3()
{
alert($F('userName'));
}
</script>
<inputtype="text"id="userName"value="JoeDoe"><br>
<inputtype="button"value=Test3onclick="test3();"><br>

2.3.使用Try.these()方法
Try.these()方法使得实现当你想调用不同的方法直到其中的一个成功正常的这种需求变得非常容易,他把一系列的方法作为参数并且按顺序的一个一个的执行这些方法直到其中的一个成功执行,返回成功执行的那个方法的返回值。

在下面的例子中,xmlNode.text在一些浏览器中好用,但是xmlNode.textContent在另一些浏览器中正常工作。使用Try.these()方法我们可以得到正常工作的那个方法的返回值。
复制代码 代码如下:
<script>
functiongetXmlNodeValue(xmlNode){
returnTry.these(
function(){returnxmlNode.text;},
function(){returnxmlNode.textContent;)
);
}
</script>
12下一页阅读全文

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章