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
    评论
JavaScript原型链是一种通过原型(prototype)来实现对象之间继承关的机制。每个JavaScript对象都有一个原型对象,用于定义该对象的属性和方法。当访问一个对象的属性或方法时,如果该对象本身没有该属性或方法,JavaScript引擎会沿着原型链向上查找,直到找到该属性或方法为止。实际上,原型链是一个链式结构,每个对象的__proto__属性指向其原型对象,形成了一个继承关系。这样,对象可以继承其原型对象的属性和方法,并且原型对象也可以有自己的原型对象,从而形成更深层次的继承关系。因此,原型链JavaScript中起到了实现对象之间继承关系的重要作用。123 #### 引用[.reference_title] - *1* *3* [JavaScript原型链](https://blog.csdn.net/m0_72446057/article/details/129155515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [JavaScript原型链(重要)](https://blog.csdn.net/liyuchenii/article/details/125957625)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值