JavaScript构造函数,原型对象理解

构造函数名首字母要大写;
使用new操作符来调用构造函数,并返回对象的实例;
构造函数内部使用this指代对象的实例;
原型对象可以理解为java中的父类;
构造函数的缺点:
所有实例对象都可以继承构造函数中定义的属性和方法,但是却不能共享,比如:

为了解决各个实例对象之间的方法或属性共享,js提供了prototype属性
对于构造函数而言,prototype是构造函数的一个属性,对于对象实例来说,prototype是对象实例的原型对象;所以prototype既是属性又是原型对象;
原型对象的属性不是对象实例的属性。对象实例的属性是构造函数的属性;
通过原型对象,可以在多个对象实例之间共享属性和方法;
原型链:

读取对象的某个属性时,JavaScript引擎会优先去寻找实例对象自身的属性,如果找不到就到它的原型去找,还是找不到就到它的原型的原型去找,以此类推,直到到达最顶端的Object.prototype还是找不到则返回undefined;
如果对象自身和它的原型都定义了相同名称的属性,那么优先读取对象自身的属性,类似java中的覆盖
一级级在原型链中寻找某个属性对性能是有一定的影响的,如果寻找一个不存在的属性,将会遍历整个原型链;
constructor属性:
constructor是prototype的一个属性,默认指向prototype对象所在的构造函数;
注意:prototype是构造函数的属性,而constructor是prototype的属性,constructor又指向了prototype所在的构造函数;
由于constructor是定义在原型对象prototype上的,所以constructor可以被所有实例对象继承;
一个函数或方法,都有prototype属性,prototype下面都有constructor属性,而且constructor属性值都指向了该函数或方法;

个人理解,有不对的地方,欢迎大家指出,共同学习!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值