彻底理解JS原型以及构造函数

什么时候创建了原型对象

我们创建的每一个函数,不光是构造函数,都会有一个prototype属性,当我们创建了一个函数/声明了一个函数,它就会根据一组特定的规则为该函数创建一个prototype属性指向的对象。

原型对象

原型对象就是我们创建了一个新函数的时候,自动创建的一个对象,当我们仅仅是创建了函数的时候,这个原型对象是这样的:

这里写图片描述

原型对象是会自动获得一个constructor属性,这个属性指向我们创建的函数。
原型对象还有很多从Object继承来的属性和方法。

但是当我们创建了一个新实例后,该实例内部将包含一个指针,指向构造函数的原型对象~ [[prototype]]

[[prototype]]

这个是一个指针,这指针指向原型对象。 脚本没有标准的方式访问这个[[prototype]],但FireFox Safari Chrome 都支持一个属性称为__proto__

ppt2.__proto__

真正重要的是:连接存在于实例和原型对象之间,而不是实例与构造函数。

Person–> Person.prototype <–person1
这里写图片描述

构造函数的prototype属性指向原型对象,原型对象的constructor属性又指回了构造函数!

我们访问原型中的方法是通过搜索查找对象属性的过程实现的。

isPrototypeOf

判断某个实例和某个原型的对应关系。

Person.prototype.isPrototypeOf(person1);//true

它就是判断实例的[[prototype]]是否指向调用这个方法的对象。

Object.getPrototypeOf

ES5新方法,用来获取一个实例的原型。

Object.getPrototypeOf(person1)==Person.prototype;

返回的原型,可以访问这个原型中的属性方法值。
我们在使用原型继承的时候会用到这个方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值