new 构造函数都做了一些什么?

2019/07/16 JavaScript

原型和原型对象

prototype__proto__ 还有 constructor,总觉得有些拗口,分不清,记录我的理解

对象和函数

JavaScript 一切皆对象,函数也是对象。但是对于prototype__proto__ 还有 constructor 我一直都不太明白,今天要好好理一下。

函数是对象,那函数是怎么指向对象的呢?想了一番,然后在控制台里面打了一下,或许这事最好的理解方式吧

每一个函数都有一个 prototype 他指向了函数的原型。

每一个函数的原型都有一个 constructor 属性,这个实现指向函数本身。

每一个函数的原型都有一个 __proto__ 属性,这个实现指向了函数原型的原型(即对象)对应前面的那句话函数也是对象。

如果直接是对象的,他就没有 prototype 属性,他的 __proto__ 属性,指向他的原型(即对象),他的 constructor 属性,这个实现指向函数本身

到这里我们理清楚了函数和对象的关系,prototype__proto__ 还有 constructor 分别是谁的属性,干什么的应该也差不多了。

说一说 new 构造函数都发生些什么

理清楚 prototype__proto__ 还有 constructor 是为了更好的理解构造函数准备。在一次模拟面试中,朋友问我通过 new 关键字调用函数都发生了一些什么? 我每一次都是临时背答案,那一次我背不出来了。然后我就决定自己去理解,而是不背答案,应付。

关于构造函数的概念,简单介绍,函数声明的时候首字母大写(为了区分普通函数和构造函数),调用的时候通过 new 关键字,否则和普通函数一样,没有区别。

prototype__proto__ 还有 constructor

如果是构造函数调用的话

通过打印 this 发现他指向了函数的原型,推导出 this.__proto__=Persion.prototype

在顺便说一句 构造函数,实例,和原型对象的关系


一名伪程序猿——sunseekers,曾被bug虐的体无完肤,却依旧待他如初恋。

如果我改过的某一个bug,吐槽过的某一个需求,写过的某一行代码

曾在你的心里荡起涟漪,那至少说明在逝去的岁月里,我们在某一刻,共同经历着一样的情愫。

有时候,虽然素未谋面。却已相识很久,很微妙也很知足。


如果你喜欢我写过的某一个文字,请支持我,鼓励我,你的鼓励是我最大的动力来源

当然恰好你也喜欢我的话,我们可以互相关注,相互学习的哟!

sunseekers

Search

    Table of Contents