原型链

原型链: 是整个面向对象的基础

  • 创建对象有几种方法:
var o1 = {name:'o1'}
var o11 = new Object({name:'o11'});

var M = function(){this.name = 'o2'};
var o2 = new M()

var P = {name:'o3'};
var o3 = Object.create(P)
  • 原型、构造函数、实例、原型链:(这块的演示可以用M来进行演示一波原型、构造函数、实例之间的关系)

在控制台输入o2(实例)、M(构造函数)、M.prototype(原型对象)、M.prototype.constructor === M(判断M的原型对象的constructor是否严格等于M)、

o2.__proto__ === M.prototype()
  • 构造函数: 凡是通过new操作后面的函数,这个函数就不是普通的函数,即使里面没有name,任何一个函数只要被new使用了就叫构造函数。 (构造函数是可以使用new运算符生成实例)

构造函数和原型对象的关系:

  • 函数都有一个prototype属性,这是在声明一个函数的时候js自动给它添加prototype属性,prototype指的就是原型对象;
  • 原型对象会以constructor(构造器)来区分是被哪个构造函数引用;
  • 实例: 上面的o1、o11、o2就是实例
  • 原型链: 实例通过prototype和proto往上查找相关联的对象直到object.prototype的过程为原型链。 (工作原理:通过原型链的方式找到原型对象,原型对象的方法被不同的实例所共有的为原型链的工作原理)
  • instanceof的原理: 判断实例对象的proto和生成该实例的构造函数的prototype是不是引用的同一个地址

如果此文对你有用请动动你的小手点个赞!谢谢!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容