一张图看懂原型链

153 阅读1分钟

如果你没看懂,说明你对构造函数,proto 和prototype还不太理解,下面简单谈谈我的看法

1函数有三种形态:普通函数、构造函数、函数对象

2当使用 new 操作符调用构造函数,会创建一个新对象;

3__proto__ 只有对象才有这个属性,它指向对象的构造函数的原型对象;

4prototype 是构造函数的原型对象;

5所有的构造函数都是由 Object 创建出来的;

6所有的函数对象都是由 Function 创建出来的。

重点: 在js中如果A对象是由B函数构造的,那么A.proto === B.prototype。

function Person(){}

var obj = {};

alert(obj.proto === Object.prototype);//true

alert(Person.proto === Function.prototype);//true

内置的Object是其实也是一个函数对象,它是由Function创建的。

Object.proto === Function.prototype //true