构造函数
概念:如果函数中的逻辑生成一个对象的并将其返回,我们就将其称之为构造函数
回顾,普通函数,如下图
(一)、构造函数严格意义就是用来生对象的
示例:用普通函数模拟的构造函数
(二)、构造函数是必须通过new这个关键字调用的(要改变this的指向)也称为 实例化一个对象(执行这个函数,生成一个对象),它的作用就是在普通函数中替我们生成了一个对象,并在最后给我们retrun出去,也就是如下红线标注所示!去掉红圈部分,就是一个标准的构造函数,声明构造函数是首字母要大些!
同时在函数中也可以 给对象附函数,如图
原型(原型对象prototype)
理解定义:在构造函数中,每一个构造函数都有prototype属性,每次实例化这个对象时(也就是用new调用时),都会有这个构造函数自带的属性,每个new的实例对象都会带有(如上图中的this.type),这样会占内存的,所以在每一个构造函数中都会有原型对象prototype。 是构造函数 构造加工对象加工厂的后院。
原型对象prototype 是用来存放构造函数共有的属性的,在每次new的实例化对象都会带有这个公共属性,如何给构造函数添加(比如这个构造函数是person),如下图: 添加成功后,每个实例化对象都会有 type了,比如
下图中 wdw.type 结果就是 “灵长类”
在js中已经规定好了,一个实例化对象在调用属性和方法是,先在这个对象中找,如果在没有的情况下,会自己向构造函数原型对象中找,如果有,会直接使用.
总结
构造函数,实例化对象,原型原型对象的关系
在三者中的关系可以如上图所示,构造函数的prototype 的指向与实例化对象的__proto__指向,是相同的,都是指向了原型对象(加工厂的后院),而实例化对象的constructor的指向则是这是构造函数的本身(不包括原型对象 )let wdw = new persion() 。。。。 console. log (wdw.constructor)
如图下所示,也就是构造函数是所定义在对象自身的属性
用途
(一)、对js本地对象做扩展
在js中万物皆对象,只要是 点 什么的,点前面的就是个对象,比如字符串, let str = “在错误的时间喜欢上了想守护一辈子的你” 这个str 就是个对象,是字符串对象 str.replace("")! 比如给字符串添加个反转的方法,如下图:
面试提问
原型原型链的理解
谢谢各位大佬的观看,如有不足,多多指教,记得点点关注呦!