原型&原型链(必考)

__proto__constructor是对象特有的,prototype是函数特有的

构造函数:可以通过new来新建一个对象的函数

实例:通过构造函数和new创建出来的对象,便是实例。

实例通过__proto__指向原型,通过constructor指向构造函数

原型

函数都有prototype属性,称之为原型,可以放一些属性和方法,共享给实例对象使用。

js获取原型的方法:

  • p.__proto__

  • p.constructor.prototype

  • Object.getPrototypeOf(p)

原型链

当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么它就会去它的原型对象里找这个属性,这个原型对象又会有自己的原型,于是就这样一直找下去,也就是原型链的概念,原型链由原型对象组成,每个对象都有__proto__属性,指向了创建该对象的构造函数的原型,原型链的尽头是null。是一个用来实现继承和共享属性的有限的对象链。

obejct.constructor.prototype == object.__proto__

image.png

原型链判断

Object.prototype.__proto__;
Function.prototype.__proto__;
Object.__proto__;
Object instanceof Function;
Function instanceof Object;
Function.prototype === Function.__proto__;

答案

Object.prototype.__proto__; // null
Function.prototype.__proto__; // Object.prototype
Object.__proto__; // Function.prototype
Object instanceof Function; // true
Function instanceof Object; // true
Function.prototype === Function.__proto__; // true

实例、原型、构造函数,三者之间的关系:

实例.__proto__ === 原型

原型.constructor === 构造函数

构造函数.prototype === 原型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值