网站首页 > 技术文章 正文
今天要介绍在JavaScript中会看到的「两种原型」,这两种原型都叫做prototype,但他们却有完全不同的意思。
第一种的prototype为「原型关係」,一个物件为是另一个物件的原型,如以下例子:
此时objB的内容会是:
他的__photo__属性会有继承而来的特性,但如果我们将这个属性指定成其他物件:
此时objB的内容会是如下:
第二种为特性的prototype值,每个建构器都会有一个prototype的特性,他的值是一个物件,而透过这个建构器产生的实体原型都会指向这个建构器的prototype,如以下例子:
来看看obj的内容如何:
他在__proto__中的constructor指向建构器本身,上一篇我们知道constructor属性可以修改,这一次我们来修改__proto__看看:
这些例子真的越试越搞混,不过可以看到不论试用何种方式去做塬型的继承或指定,最后都会存在物件中的__proto__属性中,所以只要改变了该属性就算是建构器的实体constructor特性也会跟着改变!!
那既然使用__proto__就可以更改塬型,那他又和prototype有什么关係呢?我们可以把他理解成prototype是属于父母身上的基因,而他在做继承这个动作的时候会把prototype中的基因放进孩子中的__proto__裡面,让他也拥有相同的基因存在,不过JS的物件继承真的是一个很难釐清的部分,说不定以后更了解了会再回来更新这篇文章
猜你喜欢
- 2024-10-16 JS中(a==1 && a==2 && a==3)可以在JavaScript中计算为“true”吗?
- 2024-10-16 JavaScript 的这个难点,毁掉了多少程序员
- 2024-10-16 前端开发之彻底搞懂this指向(前端this指向问题)
- 2024-10-16 JavaScript中的变量声明和作用域(一)
- 2024-10-16 Top 26 JavaScript面试问题和答案
- 2024-10-16 JS 经典实例知识点整理汇总【实践】
- 2024-10-16 苦恼于JavaScript中的reduce函数?五分钟讲透彻
- 2024-10-16 前端基础:JavaScript(前端基础题)
- 2024-10-16 一句话彻底理解JS中的回调(Callback)函数
- 2024-10-16 面试中被问到最多的 19 个 JavaScript 问题
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)