关于原型链,一些深入的理解
原型链
- Object既是对象又是函数。
- 内置匿名函数:一个函数生成了Object和Function。f(){native code}
- 根源原型对象:就是一个对象,里边有根源的一些方法,toString,valueOf,constructor等.Object.prototype
Object的原型链
Object.prototype//根源原型对象
Object.prototype.__proto__//null
Object.__proto__//内置匿名函数f(){native code}
Object.__proto__.__proto__//根源原型对象
Function的原型链
Function.__proto__//f(){native code}
Function.prototype//f(){native code}
Function.__proto__.__proto__//根源原型对象
所有的函数都是Function的实例,所有的对象都起源于Object(函数也是对象)。
汇总之后的总的原型图
函数的原型链
//以Number为例子
Number.__proto__//Function.prototype就是内置匿名函数
Number.prototype//Number可以看做是Object的一个实例的构造方法,所以Number.prototype
一般对象的原型链
一般对象是new关键字生成的new关键字内部新建了对象,然后设置对象的原型是函数的原型对象。
new关键字做的操作
const a = new Object();
a.__proto__//就是Object.prototype
a.prototype//undefined,普通对象只继承Object,不是函数,没有原型对象。