JS基础之对象的结构之原型

``对象中存储属性的区域实际有两个:

  1. 对象自身
  • 直接通过对象所添加的属性,位于对象自身中
  • 在类中通过x=y的形式添加的属性,位于自身对象中
  1. 原型对象(prototype)
  • 对象中还有些内容,会存储到其他对象里(原型对象)
  • 在对象中会有一个属性来存储原型对象,这个属性叫做_ _ proto_ _
  • 原型对象也负责为对象存储属性,当我们自身访问属性时,会优先访问对象自身属性,对象自身不包含该属性时,才去原型对象中寻找
  • 会添加属性到原型对象的情况:
    1. 在类中通过XXX(){}方式添加的方法,在原型中
    2. 主动向原型中添加的属性或方法
      在这里插入图片描述
class Person{
  name="桃良"
  age=18
  sayHello(){
  console.log("hello,我是"this.name)
  }
}
const p= new Person()
console.log(p)
console.log(p._ _proto_ _)

访问对象原型
对象. _ proto_
Object.getProtoypeOf(对象)
原型对象中的数据

  1. 对象中的数据(属性,方法等)

  2. constructor(对象的构造方法)
    注意:

    原型对象也有原型,这样就构成了一条原型链,根据对象复杂程度不同,原型链的长度也不同
    p对象的原型链  p对象 --> 原型 -->原型 --> null
    obj对象的原型:obj对象 --> 原型 --> null
    

在这里插入图片描述
在这里插入图片描述
所有的同类型对象它们的原型对象都是同一个,也就意味着,同类型对象的原型链是一样的
原型的作用:原型就相当于是一个公共的区域可以被所有该类实例访问,可以将该类实例中,所有的公共属性(方法)统一储存到原型中,这样我们只要创建一个属性,就可以被所有实例访问
JS中继承就是通过原型实现的,当我们继承时子类的原型就是一个父类的实例
在这里插入图片描述

在这里插入图片描述
instanceof
instanceof用来检查一个对象是否是一个类的实例

  • instanceof检查的是对象的原型链上是否有该类实例,只要原型链上有该实例,就会返回true == Object是所有对象的原型,所以任何对象和object进行instanceof运算都会返回true==
    in
  • 使用in运算符检查属性时,无论属性在对象自身还是原型时都会返回true
  • Object.hasOwn(对象,属性名)
    • 用来检查一个对象自身是否含有某个属性

在这里插入图片描述
new运算符

在这里插入图片描述
面向对象
面向对象的本质就是,编写代码时所有操作都是通过对象来进行的
面向对象编程的步骤

  1. 找对象
  2. 搞对象

学习对象

  1. 明确这个对象有什么用,代表什么
  2. 如何获取这个对象
  3. 如何使用这个对象(对象中的属性和方法)

对象的分类

内建对象

  • 由ES标准所定义的对象
  • 比如 Object Function String Number…

宿主对象

  • 由浏览器提供的对象
  • BOM,DOM

自定义对象

  • 由开发人员自己创建的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值