现在好多人的基础不咋的,包括我在内哈哈,得多多学习,多多看书,其实小红书写的是真好,可惜没多少人真的看进去理解子 。。。。
什么是构造函数呢?
构造函数其实就是普通的函数,就是调用的方法不同,通常都是首字母大写,用到 new 。
构造函数的一个问题就是:每次都重新在实例上重新创建一次。。
什么情况下会使用到构造函数呢?
在生成数组的情况下会使用到,es6 中的 class 其实就是构造函数的语法糖。构造函数 Array 来说,我们随便创建一个函数A,然后 new A(),那么这个对象的构造函数就是 A。是不是很简单?
什么情况下会使用到 this 呢?
this 的话一般分好几种情况,最简单的就是就近原理,指向当前对象。
如果是函数中的话 this 指向的是 window 。
如果是 方法调用的话,这个 this 谁调用这个方法谁就是 this 。
构造函数调用,this 就是指的当前对象。对象上面有属性和方法,如果某个函数中调用这个属性或者方法,那么就用到 this。
es6 中小箭头函数的理解?
es6 中的小箭头函数中是没有 this ,也没有 prototype,也没有 argument super() 。当然也不能用构造函数、call 或者 apply 。
小箭头函数中 call 或者 apply 是无法使用的,没办法改变当前的作用域。
小箭头函数中 this 一旦定义是无法改变的。
new 的话会改变 this 的指向的。
这里扯到一个 call 和 apply 的区别?
一句话的理解:call 可以接收多少参数,apply 只能接收两个参数。
构造函数的流程是啥呢?
1、创建一个构造函数。
2、将新的对象设置函数的 this 。这里的this 用作新对象。
3、逐行的执行函数。
4、将新建的对象做为返回值。
顺便讲一波 function ?
每个函数都是对象,每个对象都有属性和方法。
属性里面有:length、prototype。
方法里面有:call、apply。
函数的内部属性有:argument、this(内部属性)。
如何创建立一个构造函数呢?
写个 demo :