原型链相关

112 阅读1分钟

了解原型链,首先要了解构造函数、实例、原型对象之间的关系

构造函数:用new来调用,就是为了创建一个自定义类

实例:是类在实例化之后一个一个具体的对象

原型:被用于复制现有实例来生成新实例的函数

原型链: 当访问一个(实例)对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的_ proto _ 隐式原型上查找,即它的构造函数的prototype,如果还没找到就会在构造函数的prototype的_ proto _ 中查找,这样一层一层向上查找就会形成一个链式结构,称为原型链

所有的对象会一层层往上找原型,最终点是 Object,而 Object 的上一层原型就是 null 了。

51d65f9e66c1a215ffa3b22ef6215c3.png

prototype 只有函数才有,(构造)函数的原型对象

_ proto _ 所有对象都有,总是指向对应(构造)函数的原型对象prototype

constructor _ proto _下的constructor指向构造函数自己


补充说明

ES 中的构造函数可以用来创建特定类型的对象,用来在创建对象时初始化对象。它的特点是,一般为大写字母开头,使用 new操作符号来实例化对象,比如:

function Person() {}
var person = new Person();
person.name =  "Lisa";
console.log(person.name);  // Lisa

其中Person 就是构造函数,person 就是对象。

总结

先有Object.prototype(原型链顶端),然后Function.prototype继承Object.prototype而产生,最后FunctionObject 和其它构造函数继承Function.prototype而产生。