js中__proto__和prototype的区别和关系?
js中__proto__和prototype的区别和关系? |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
构造函数原型对象是一个引用类型 ,是一个对象,它保存在内存中的一个堆中, prototype指向这个堆,new出来的实例用_proto_也指向这个堆,并且通过这个_proto_来实现对堆的引用实现属性的添加。但是虽然此时两者恒等,因为都指向这个堆,但是两者并不是赋值的关系。两者并没有什么关系,他们只是通过这个堆让我们觉得似乎两者是一样的。比如现在假如让原型函数的prototype指向一个新对象,但是_proto_还是指向原来那个堆,这个实例属性是不变的。 |
|
|
|
|
1. __proto__是每个对象都有的一个属性,而prototype是函数才会有的属性。
2. __proto__指向的是当前对象的原型对象,而prototype指向的,是以当前函数作为构造函数构造出来的对象的原型对象。 |
|
|
|
|