一、首先,知其然才能知其所以然,要了解原型对象,首先要了解原型对象的来由?
当用一个构造函数生成不同的实例对象时,不同的实例对象调用其中方法时,会开辟不同的内存来存放所调用的方法。这就造成了不同的实例对象调用同一个方法时,会开辟很多不同的内存。从而造成内存浪费的现象。因此需要一种方式能不能使得不同的实例对象调用同一个方法时来指向同一个内存地址,而避免内存资源的浪费呢?
为什么会开辟不同的内存?
不同的实例对象存储在不同的内存中,我们都知道实例对象可以调用其中的属性和方法,属性是简单数据类型不需要开辟新的内存,而方法属于隐匿函数为复杂数据类型,所以需要新开放一个内存空间来存储所调用的方法。那么不同的实例对象调用同一个方法时就会开辟不同的内存来存储这个方法。
二、原型对象是什么?
JS里规定,prototype是构造函数中的一个属性,而这个属性指向一个对象,这个对象中包括的属性和方法可以被该构造函数所生成的所有实例对象访问,且访问地址唯一。
原型对象和prototype到底是什么关系?
prototype的中文意思为原型。本质来讲prototype是构造函数中的一个属性,将这个属性理解为指针,只要通过构造函数(构造函数名.prototype;)来访问这个prototype属性,则prototype会用指向功能指向一个对象。
因此访问构造函数中prototype属性时实际上则是访问这个对象。因此则将prototype称为原型对象。
本文解析了JavaScript中原型对象的由来及其如何解决内存浪费的问题,深入介绍了prototype属性及其实现原理。
1071

被折叠的 条评论
为什么被折叠?



