web前端:_proto_和prototype的区别
软工小法师
2024-04-23 23:14
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表示该函数的原型,也表示一个类的成员的集合。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341