<script> function showLocalLinks(paragraph){ paragraph = $(paragraph); var links = $A(paragraph.getElementsByTagName('a')); //find links that do not start with 'http' var localLinks = links.findAll( function(link){ var start = link.href.substring(0,4); return start !='http'; }); //now the link texts var texts = localLinks.pluck('innerHTML'); //get them in a single string var result = texts.inspect(); alert(result); } </script> <p> This <a href="https://othersite.com/page.html">text</a> has a <a href="#localAnchor">lot</a> of <a href="#otherAnchor">links</a>. Some are <a href="https://wherever.com/page.html">external</a> and some are <a href="#someAnchor">local</a> </p> <input type=button value="Find Local Links">
上面的代码仅仅是一点小小的实践让人爱上这种语法。请参看 和的所有函数
prototype.js参考 JavaScript类扩展prototype.js 类库实现强大功能的一种途径是扩展已有的JavaScript 类。
对 Object的扩展Method
Kind
Arguments
Description
extend(destination, source)
static
destination: any object, source: any object
提供一种通过拷贝所有源以象属性和函数到目标函数实现继承的方法
inspect(targetObj)
static
targetObj: any object
返回可读性好关于目标对象的文字描述,如果对象实例没有定义一个inspect函数,默认返回toString函数的值。
Method
Kind
Arguments
Description
toColorPart()
instance
(none)
返回数字的十六进制表示形式。在把一个RGB数字转换成HTML表现形式时很有用。
succ()
instance
(none)
返回下一个数字,这个方法可用于迭代调用场景中。
times(iterator)
instance
iterator: a function object conforming to Function(index)
Calls the iterator function repeatedly passing the current index in the index argument. 反复调用iterator函数并传递当前index到iterator的index参数。
下面的例子用提示框显示0-9。
<script> function demoTimes(){ var n = 10; n.times(function(index){ alert(index); }); /*************************** * you could have also used: * (10).times( .... ); ***************************/ } </script> <input type=button value="Test Number.times()"> 对 Function扩展Method
Kind
Arguments
Description
bind(object)
instance
object: the object that owns the method
返回function的实例,这个实例和源function的结构一样,但是它已被绑定给了参数中提供的object,就是说,function中的this指针指向参数object。
bindAsEventListener(object)
instance
object: the object that owns the method
用法和上面的bind一样,区别在于用来绑定事件。
让我们看看如何运用这些扩展。
<input type=checkbox id=myChk value=1> Test? <script> //declaring the class var CheckboxWatcher = Class.create(); //defining the rest of the class implementation CheckboxWatcher.prototype = { initialize: function(chkBox, message) { this.chkBox = $(chkBox); this.message = message; //assigning our method to the eventthis.chkBox.onclick = this.showMessage.bindAsEventListener(this);
}, showMessage: function(evt) { alert(this.message + ' (' + evt.type + ')'); } }; var watcher = new CheckboxWatcher('myChk', 'Changed'); </script> 对String的扩展Method
Kind
Arguments
Description
stripTags()
instance
(none)
返回一个把所有的HTML或XML标记都移除的字符串。
stripScripts()
instance
(none)
返回一个把所有的script都移除的字符串。
escapeHTML()
instance
(none)
返回一个把所有的HTML标记合适的转义掉的字符串。
unescapeHTML()
instance
(none)
escapeHTML()的反转。
extractScripts()
instance
(none)
返回一个包含在string中找到的所有<script>的数组。
evalScripts()
instance
(none)
执行在string中找到的所有<script>。
toQueryParams()
instance
(none)
把querystring分割才一个用parameter name做index的联合Array,更像一个hash。
parseQuery()
instance
(none)
和toQueryParams()一样.
toArray()
instance
(none)
把字符串转换成字符数组.
camelize()
instance
(none)
转换一个以连字符连接的字符串成一个骆驼法样式的字符串。比如,这个函数在写代码时,把它做为一个样式工具使用是很有用的。
因为array扩展于enumerable,所以所有enumberable对象的函数,array都是可以使用的,除此之外,下面的这些也是已经实现了的。