_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; }; } }