原型和原型链的个人理解(内含图片描述)

90 阅读1分钟

一个函数执行,Fn(),函数是一个类,每个类都有prototype属性,指向当前类的原型,也就是Fn.prototype 

原型是对象,每一个对象都有_proto_属性,指向创建当前对象的构造函数的原型

个人对上面的图的一些理解 

  1.  我理解的,类就相对与是函数,所以每一个类都有prototype,指向原型,同时万物皆对象,当前类又是一个对象,所以也有_proto_属性,但是类首先是一个函数,然后才是对象,所以—proto—指向Function内置类的原型,也就是Function.prototype 
  2.  let F1=new Fn() ,Fn是类,是一个构造函数,F1是构造函数的实例,通过typeof可以知道F1是一个对象,所以有-proto-属性,指向构建了当前对象的构建函数的原型,也就是Fn.prototype 
  3. 内置函数类Function是一个函数,所以有prototype,指向原型,指向Function.prototype, 但是他又是一个对象,不过他首先是一个函数,然后才是对象,所以指向构建函数的构造函数的原型,也就是Function内置类的原型,—proto—指向Function内置类的原型,也就是Function.prototype, 
  4. 内置对象类同理,首先是一个函数,然后是对象,所以object内置类指向Function内置类的原型,也就是Function.prototype, 
  5. Function.prototype是一个对象,所以—proto—指向构建当前对象的构造对象的原型,构建对象的构造函数,就是Object内置对象类,Object.prototype
  6.  我们用到了一个方法或者属性,先在私有属性,然后再去顺着-proto-往上级原型找,一直找到最外层的object内置类的原型为止,这个就是原型链查找机制