prototype.js 是Sam Stephenson写的一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国内外有多个基于此类库实现的效果库,也做得很棒。
prototype.js不仅是一个有很大实用价值的js库,而且有很高的学习价值。
---
在prototype.js中,prototype对象是实现
面向对象的一个重要机制。
每个
函数(Function)就是一个对象,
函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。
在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。
1、该对象被类所引用,只有函数对象才可引用。
2、在new实例化后,其成员被实例化,实例对象方可调用。
同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。
--来源:
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