一.new操作符具体干什么了
1.创建一个空的对象
2.将空对象的原型指向构造函数的原型
3.将空对象作为构造函数的上下文
4.对返回的结果进项判断
二.具体new出来的实例
1.创建一个空的对象
function fn(){
}
console.log(new fn());
返回的结果: 是一个空的对象
2.将空对象的原型指向构造函数的原型
console.log(fn.prototype==new fn().__proto__); //true
返回的结果: 返回的结果为true
3.将空对象作为构造函数的上下文(改变this指向)
function fn(){
console.log(this);
this.name='aa'
}
fn()
全局下的this指向的是window
当加了new之后this的指向发生了变化。
function fn(){
console.log(this);
this.name='aa'
}
new fn()
此时的this指向空的对象
4.对构造函数返回值的处理判断
如果返回的值是基本数据类型就直接进行返回,如果是引用数据类型。就会直接返回引用数据。
代码演示:
function fn(name){
this.name=name
return [10,20,30,40,50]
}
console.log( new fn('张飞'));
返回的是一个数组:
如果是一个基本的数据类型:
function fn(name){
this.name=name
}
console.log( new fn('张飞'));
返回的是你传递过去的值: