prototype.js是由Sam Stephenson写的一个javascript类库。兼容标准的类库,能帮助你轻松建立有高度互动的web2.0特性的丰富的客户端页面。
一个原型类似其他语言中的一个类,它定义的属性且可以被此类产生的所有对象所共享。然后它又不像一个类,原型可以在运行时获得和改变。可以增加属性到原型上或者删除原型上已经存在的属性。所有的变化将立即影响由原型派生的对象。它是如何工作的呢? js是一种动态的语言,它不是在编译期间去搜索属性值,而是在执行请求期间去搜索属性值。例如,考虑一个基本的继承案例,A的原型继承自B的原型,a对象是由A的原型派生出的对象.如果对象a上的一个属性被请求,则js表现出如下搜索过程:
js首先检查a对象上是否存在此属性,如果没有搜索到,则进行第2部分搜索过程。
js访问A的原型检查是否有此属性,如果仍然没搜到,则进行第3部分搜索过程。
3. js最后访问B的原型检查是否有此属性.如果没有搜到将访问每个对象上的原型直到达到根原型上。这样的一个搜索过程称原型链。
原文:http://www.iteye.com/topic/1125440