首页 > 其他 > 详细

为什么要使用把方法定义在prototype上

时间:2021-01-26 22:56:46      阅读:63      评论:0      收藏:0      [点我收藏+]

属性和方法都可以写在构造函数上,为什么还要使用prototype?

  • 函数上自带【prototype】属性,prototype上的【方法、属性】可被构造函数实例共享
  • 对象上自带【__proto__】属性,指向其构造函数prototype,但在对象上找【属性、方法】找不到时,会通过__proto__继续,一级级往上找,直到找到或__proto__指向是null为止

每次通过new 关键字创建一个实例对象时,会return一个全新的【相互独立】对象,即其构造函数上定义属性和方法,在每个实例对象深拷贝一份,放在不同内存空间

实际上很多时候,我们只需要实例对象属性是独立,方法是共享。

如果相同方法在每个实例对象上都重新定义一次,太浪费内存。所以把共享部分提出来,只定义一次,放在共享空间,而每个实例对象只需要一个指针指向共享空间。这个指针就是每个对象上的__proto__,共享空间就是对象的构造函数上的prototype上的属性\方法占用的内存空间

为什么要使用把方法定义在prototype上

原文:https://www.cnblogs.com/baixinL/p/14332592.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!