new 关键字
//比如我们创建了一个新函数:
function getName(){
}
//当我们执行:
new getName();
//上面这句话到底做了些什么?
//第1、创建了一个空对象,相当于:
var obj={};
//第2、将这个空对象的__proto__成员指向了getName函数对象prototype成员对象,相当于:
obj.__proto__ = getName.prototype;
//第3、将getName函数对象的this指针替换成obj,相当于:
getName.call(obj);
//对于第3点我们来举个例子:
//比如我们创建了一个函数:
function Base(){
console.log(this);
}
//如果我们不用new关键字,而是直接执行Base();那么这里的this将会是window:
Base();//window
//但是如果我们用了new关键字,this就会变成了Base本身;
new Base();//Base