JavaScript原型和原型链

一、含义

1、每一个函数(箭头函数除外)自带属性prototype,是默认属性,在函数创建时自动添加。称之为原型对象或者原型。因为是对象,所以可以添加属性和方法。

2、通过new函数得出来的叫实例对象。

3、每一个new出来的实例对象都天生自带一个属性, __proto__,称之为原型链对象(隐式原型)

4、关于new的作用:创建一个新对象;改变函数内的this指向,为这个新对象;执行函数内的代码,并将新对象的__proto__指向该函数的prototype;检查函数是否主动返回对象,如果没有,则返回这个新对象

5、原型链:每个对象都有__proto__,而这个对象有自己的原型prototype,会会形成一条由__prpto__串起来的链条,叫做原型链。

 

 

二、关系

1、每一个函数都有一个原型对象,原型对象上的属性和方法能被实例访问

1、new出来的实例对象的 __proto__指向这个构造函数的 prototype

2、原型对象有属性constructor ,该属性返回对象的构造函数

3、prototypr是一个对象,有继承属性

4、关于原型链规则:当访问对象中的属性和方法时,如果这个对象有,返回结果;如果这个对象没有。则去__proto__中查找,如果有,则返回这个结果

 

三、使用

1、原型对象是一个对象,可以向这个对象添加属性和方法,在函数内部

2、prototype可以直接添加属性和方法,例:

但是prototype身上添加的方法和属性不是为了给函数用,为了给将来被new出来的实例的隐式原型使用

 

 

 

 

四、总结

由此可以得出以下等式:

cp1.__proto__   ===   createPerson.prototype

cp2.__proto__   ===   createPerson.prototype

createPerson.prototype.constructor  === createPerson

cp1.__proto__.constructor === createPerson

cp2.__proto__.constructor === createPerson

 

cp1  !==  cp2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值