前言知识、结论:
原型:
- 把一个函数称为类的话,原型就是每个类都有的属性
- 作用:给这类添加属性
- 分为两类:显式原型prototype 和 隐式原型 __proto__
- 所有函数对象(Function)都有显式原型
- 所有对象(如Object、Function、Array等对象)都有隐式原型
原型链:
- 本质是链表,__proto__相当于链表的指针,指向下一个对象
- 每个对象都有__proto__属性,它指向构造函数的prototype属性,构造函数的prototype属性的__proto__属性指向下一个对象的peototype属性,就这样一层层网上查找,直到找到最顶层的对象Object.prototype。这个过程就是原型链
- 函数的顶层对象是Function.prototype
- 对象的顶层对象是Object.prototype
new 的过程:
- 使用 new 关键字,首先创建了一个空的对象
- 这个空的对象有__proto__属性,指向的是它的构造函数的prototype属性
- 将this指向的是new 出来的实例对象
- 执行构造函数里面的语句
- 最后返回新的对象,如果构造函数有return 值,就返回return值
图解原型链:

原型链相关应用:
- instanceof:在原型链上一层层查找,如果在原型链上有该对象,返回true
- 继承:
- ES6:extends
- ES5:原型链继承、构造函数继承、组合继承、寄生组合继承
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232612.html原文链接:https://javaforall.net
