JavaScript 原型链

对象

无非两种编程思路(面向过程、面向对象),js虽然弱类型语言但是他也是个万物皆对象的面向对象编程语言。
  • 类:具有相同的属性与方法的一类对象的抽象(一组对象的集合,一个大类目)
  • 实例:某一类其中的一个对象(new对象、实例化对象…)
  • 对象:具有属性与方法的具体的事物
  • 比如:类:汽车这个类 class car,创建实例:new一个对象let Cadillac = new car(),这里这个凯迪拉克就是一个对象
了解以上知识后我们来了解下原型
首先什么是原型呢?
  • 我是这么理解的(原型就好比我们复印件的原件)
原型链继承:
  • 所有对象都会有一个__proto__的属性,对象的这个自带的属性可以是你向上追溯,他会指向他构造函数的原型new function().__proto__ == function.prototype。就好比拿着打印件第二版去找第一版,然后找到原件一样。最顶部是object() 该对象的原型
  • 每个函数实例都会存在一个prototype的方法,他可以通过prototype找到该函数的原型
  • 这个原型有什么作用呢? 你在原型上添加的方法,他的所有实例都可以使用(也就是说你在object对象上添加方法的所有的对象都可以获取到哦)
  • 原型链继承其实就是两个函数实例,让其中一个函数的原型去等于另一个函数实例,这样操作的话就相当于得到了该函数原型上的所有方法
    • 缺陷:如果是引用类型的数据:其中一个子实例进行修改之后也会影响到其他子实例,基本属性是不会出现这样的问题的
    • 所以大部分情况都是:基本属性 + 方法,将属性封装在构造函数中、将方法定义在原型对象上

总结:

原型链我理解就是一个数据链路,通过条线把有关联的数据串起来,一个构造函数拥有prototype可以找到该构造函数的原型,该构造函数的实例可以通过__proto__找到他的构造函数的原型,只有函数才有原型,而原型属于一个对象,他会存在__proto__属性,可以一直向上追溯,源头是object对象的原型。而原型链继承就相当于,一个函数在自己的原型上添加了另一个函数,那样他就拥有的该函数的方法盒属性(原型上的所有方法与属性,该函数的子实例都可以调用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值