1.创建一个空对象
2.将空对象的原型指向于 构造函数的原型
3.将空对象作为构造函数的上下文(改变this指向)
4.对构造函数返回值的处理判断
==4.1.如果return返回值是基本数据类型,则会忽略
==4.2.如果return返回值是引用数据类型,则new操作符不管用,直接返回引用数据类型
1.创建一个空对象
2.将空对象的原型指向于 构造函数的原型
// 构造函数
function Foo() { }
// 1.创建一个空对象
console.log(new Foo()) //Foo {}
// 2.将空对象的原型指向于 构造函数的原型
console.log(new Foo().__proto__ === Foo.prototype) //true
3.将空对象作为构造函数的上下文(改变this指向)
// 3.将空对象作为构造函数的上下文(改变this指向)
// 默认this指向于window
function Fun() {
console.log(this,'this指向') //window
this.name = '李四'
}
Fun()
// 使用new操作符后,指向于空对象
function Fun() {
console.log(this, 'this指向') //Fun {}
this.name = '李四'
}
console.log(new Fun()) //Fun {name: '李四'}
4.对构造函数返回值的处理判断
// 对构造函数返回值的处理判断
// 1.如果return返回值是基本数据类型,则会忽略
// 2.如果return返回值是引用数据类型,则new操作符不管用,直接返回引用数据类型
function Fun() {
this.name = '李四'
return 1111 //基本数据类型,忽略
}
console.log(new Fun()) //Fun {name: '李四'}
function Fun2() {
this.name = '李四'
return {a:1} //引用数据类型,返回出去
}
console.log(new Fun2()) //{a: 1}