JS原型和原型链
什么是原型
JS声明构造函数(用来实例化对象的函数)时,会在内存中创建一个对应的对象,这个对象就是原函数的原型
通俗的来说原型就是一个可以被复制/克隆的类,通过复制原型可以获得一模一样的新对象,那么也可以说原型是一种模板。
特性:
-
原型创造出来的新对象实例会共享原型的所有属性和方法
-
所有函数都有一个
prototype
(原型)属性,属性值指向原型对象 -
实例对象的
__proto__
指向构造函数的prototype
什么是原型链
每个对象拥有一个原型对象,通过proto
指针指向其原型对象,并从中继承方法和属性,同时原型对象也可能拥有原型,这样一层一层往上,最终指向null(Object.prototype.__proto__
)。这种关系被称为原型链,通过原型链一个对象可以拥有其他对象中的属性和方法。
原型链的尽头:
从上图可以看出原型链的尽头是Object,而Object.prototype.__proto__
的值是null
prototype和 proto的区别
- prototype是构造函数的属性
__proto__
是每个实例都有的属性,可以访问[[prototype]]属性- 实例的
__proto__
与其构造函数的prototype
指向的是同一个对象
原型和原型链的区别
原型是为了实现对象间的联系,解决构造函数无法数据共享而引入的一个属性,而原型链是一个实现对象间联系即继承的主要方法
参考文章:
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 LeoStar
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果