欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

_proto_和prototype的区别

程序员文章站 2023-11-14 21:11:04
1. _proto_和prototype prototype属性是一个静态属性, _proto_属性是一个实例属性。 prototype表示类的原型对象,_proto_表示原型对象中定义的内部属性[prototype]的值。 类的每一个实例都有一个_proto_属性,用于引用创建它的构造方法的pro ......
1. _proto_和prototype
prototype属性是一个静态属性,
_proto_属性是一个实例属性。
prototype表示类的原型对象,_proto_表示原型对象中定义的内部属性[prototype]的值。
类的每一个实例都有一个_proto_属性,用于引用创建它的构造方法的prototype属性,也就是该类的原型对象,即存在如下等式:(new array("abc"))._proto_===array.prototype (array("abc")为array的实例)
2.es5中增加的原型处理
使用object.getprototypeof()方法可以得到指定的对象的prototype属性
该方法的格式为:object.getprototypeof(obj),该方法是一个静态方法,能获取这个对象的原型
object.getprototypeof(new array("abc"))===array.prototype与(new array("abc"))._proto_===array.prototype意义相同
用户可使用如下代码实现浏览器兼容
 if(typeof object.getprototypeof!=="function"){
              if(typeof "test"._proto_==="object"){
                   object.getprototypeof=function(object){
                        return object._proto_;
                    };
                }else{
                     object.getprototypeof=function(object){
                        return object.constructor.prototype;
                      };
                  }
              }