构造函数与new关键字

 
// 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.返回新对象;

原文地址:https://www.cnblogs.com/shenlan88/p/11072740.html