// function f1(){
// console.log(this)
// }
// f1() //window
// f2 = new f1; //f1{}
// f1() //window
构造函数
构造函数本事是普通函数,当我们用new关键字调用时,能实现某类功能,我们才把它称呼为构造函数。
所以构造函数的核心就是关键字new .
构造函数(new)
当任意一个普通函数用于创建一类对象,并且通过new操作符来调用时,它就可以作为构造函数
作用:构造新对象,设置对象的属性和方法.(构造函数里面写一堆this的作用)
ECMAScript提供了多个内置构造函数,如 Object、Array、String、Boolean、Number、Date…等等。
var obj = new Object();
var arr = new Array();
用new调用函数的执行过程
new
* 一元运算符,后面只能跟函数,用来调用函数
*
* 调用函数的方式
* 1、new 函数名 ( 没有参数的情况下用这种方式 )
* 2、new 函数名()
用new调用函数的执行过程
简单来说,new调用一个函数,执行了该函数,然后返回一个对象(用变量接收这个对象) 。
function f1(){
console.log(this)
}
f1() //window(普通函数)
new f1; //f1{} 和new f1()效果一样 由new运行,称为构造函数,改变了 this指向
f1() //window ,没用new运行,还是普通函数
* 1、自动创建一个空对象
* 2、把函数内部的this指向创建的这个对象(也就是构造函数的作用,构造新对象,设置对象的属性和方法(构造函数里面写那么多this的作用))
* 3、在函数执行完成以后自动返回创建的那个对象,即使函数里面没有return
函数里有return
(1、return的是对象
返回这个对象
2、return的是非对象
返回自动创建的那个对象 )
* 注意:
* 1、用new调用的函数,得到的永远是一个对象,不管函数有没有返回值
* 2、使用new调用函数,这个函数就是一个用来创建对象的函数(构造函数)
*/
构造函数的调用其中有几步
是:
1.创建一个新对象;
2.将构造函数的作用域赋给新对象(因此this就指向了这个新对象);
3.执行构造函数中的代码;
4.返回新对象;