对原型、原型链的理解

复制代码
   在 JavaScript 中是使用构造两数来新建一个对象的,每一个构造函数的内部都有一个 prototype 属性,它的属性值是一个对象,这个对象包含了可以由该构造西数的所有实例共享的属性和方法。当使用构造函数新建一个对象后,在这个对象的内部将包含一个指针,这个指针指向构造两数的prototype 属性对应的值,在 ES5 中这个指针被称为对象的原型。一般来说不应该能够获取到这个值的,但是现在 浏览器中都实现了_proto_ 属性来访问这个属性,但是最好不要 使用这个属性,因为它不是规范中规定的。ES5 中新增了一个 Object.getPrototypeOf() 方法,可以通过这个方法米获取对象的原型。 
    当访问一个对象的属性时,如果这个对象内部不存在这个属性,那么它就会去它的原型对象里找这个属性,这个原型对象义会有自己的原型,于是就这样一直找下去,也就是原型链的概念。原型链的尽头一般来说都是 0bject.prototype 所以这就是新建的对象为什么能够使用 toString() 等方法的原因。 

特点:JavaScript 对象是通过引用来传递的,创建的每个新对象实体中并没有一份属于自己的原型副本。当修改原型时,与之相关的对象也会继承这一改变。


那么原型链的终点是什么?如何打印出原型链的终点?

由于 Object 是构造函数,原型链终点 Ob ject.prototype.proto ,而 Object.prototype.proto === null // true,所以,原型链的终点是 null。原型链上的所有原型都是对象,所有的对象最终都

是由 0bject 构造的,而 Object.prototype 的下一级是Object. prototype.proto 。



相关推荐
派小心.1 分钟前
热力图工具的多页面管理功能怎么比?
前端·数据分析
fj800j1 分钟前
首助记账本新增「标签管理」功能:跨分类归集项目账目,一个账本管完所有事
数据结构·经验分享·笔记·学习·分布式账本
Do_It_Today8 分钟前
php xml 入门学习资料
开发语言·php
垆边人似月.12 分钟前
分割数组的最大值最小化(200分 / 二分答案 + 贪心)
数据结构·算法·排序算法
熊猫钓鱼>_>17 分钟前
Kotlin Multiplatform for OpenHarmony 实战:为 Landscapist 实现图片加载适配
开发语言·kotlin·华为云·ai编程·harmonyos·鸿蒙·openharmony
OpsEye18 分钟前
上线大模型只是第一步,用好 AI 离不开完整的成本管控
javascript·ai编程
爱勇宝23 分钟前
裁员裁掉了那个干了14年的人:我这才看清职场的5条潜规则
前端·后端·程序员
Hilaku27 分钟前
GraphQL 在国内为什么水土不服?
前端·javascript·程序员
Latchh34 分钟前
PDF打开不要密码却显示已加密,前端怎么判断
前端·图像处理·人工智能·计算机视觉·pdf
秋天的一阵风36 分钟前
🧐 为什么大厂 RAG 从不用纯向量检索?
前端·面试·ai编程