new fn() new关键字后面跟函数 是一个表达式(运算符) 创建对象的运算 整个表达式一定会得到一个对象
new函数构造函数的过程:
!!!!重点!!!!
1. 创建一个空对象
2. 运行构造函数,让内部的this指向创建的对象(用创建的空对象去调用构造函数)
3. 整个表达式的结果看函数的返回值:
3.1返回值是引用数据 那么就是返回值
3.2返回值不是引用数据 那么就是这个运行完毕之后的创建的那个对象
只要是函数 就可以拿来new
function fm(name) {
this.name = name
return fm
}
var re=new fm("jack")
console.log(re)
任何对象都是函数创建出来的==>任何对象都有构造函数