优秀的编程知识分享平台

网站首页 > 技术文章 正文

[JavaScript]原型(prototype)在JavaScript中的两种意思

nanyue 2024-10-16 11:03:31 技术文章 3 ℃

今天要介绍在JavaScript中会看到的「两种原型」,这两种原型都叫做prototype,但他们却有完全不同的意思。

第一种的prototype为「原型关係」,一个物件为是另一个物件的原型,如以下例子:

此时objB的内容会是:

他的__photo__属性会有继承而来的特性,但如果我们将这个属性指定成其他物件:

此时objB的内容会是如下:

第二种为特性的prototype值,每个建构器都会有一个prototype的特性,他的值是一个物件,而透过这个建构器产生的实体原型都会指向这个建构器的prototype,如以下例子:

来看看obj的内容如何:

他在__proto__中的constructor指向建构器本身,上一篇我们知道constructor属性可以修改,这一次我们来修改__proto__看看:

这些例子真的越试越搞混,不过可以看到不论试用何种方式去做塬型的继承或指定,最后都会存在物件中的__proto__属性中,所以只要改变了该属性就算是建构器的实体constructor特性也会跟着改变!!

那既然使用__proto__就可以更改塬型,那他又和prototype有什么关係呢?我们可以把他理解成prototype是属于父母身上的基因,而他在做继承这个动作的时候会把prototype中的基因放进孩子中的__proto__裡面,让他也拥有相同的基因存在,不过JS的物件继承真的是一个很难釐清的部分,说不定以后更了解了会再回来更新这篇文章

最近发表
标签列表