prototype.js是由SamStephenson写的一个Javascript类库。该框架的设计思路巧妙,而且兼容标准的类库,能够帮助开发人员轻松建立有交互性良好的web2.0特性富客户端页面。
1._proto_和prototype
prototype属性是一个静态属性,
_proto_属性是一个实例属性。
prototype表示类的原型对象,_proto_表示原型对象中定义的内部属性[prototype]的值。
类的每一个实例都有一个_proto_属性,用于引用创建它的构造方法的prototype属性,也就是该类的原型对象,即存在如下等式:(newArray("abc"))._proto_===Array.prototype(Array("abc")为Array的实例)
2.es5中增加的原型处理
使用Object.getPrototypeOf()方法可以得到指定的对象的prototype属性
该方法的格式为:Object.getPrototypeOf(obj),该方法是一个静态方法,能获取这个对象的原型
Object.getPrototypeOf(newArray("abc"))===Array.prototype与(newArray("abc"))._proto_===Array.prototype意义相同
用户可使用如下代码实现浏览器兼容
if(typeofObject.getPrototypeOf!=="function"){
if(typeof"test"._proto_==="object"){
Object.getPrototypeOf=function(object){
returnobject._proto_;
};
}else{
Object.getPrototypeOf=function(object){
returnobject.constructor.prototype;
};
}
}
在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。