先看个例子
function User(name){
this.name = name
this.show = function(){
console.log(this.name)
}
return this//不写默认也是返回this
}
let u1 = new User('牛顿')
创建一个实例,必须使用new操作符。用这种操作符调用构造函数实际上会经历以下4个阶段
- 创建一个新对象
- 将构造函数的作用域赋值给新对象(因此this就指向了新对象)
换句话说:让空对象的proto(IE没有该属性)成员指向了构造函数的prototype成员对象
代码解释:
let arr = [];//实际上是let arr = new Array
console.log(arr.__proto__ == Array.prototype)//true
- 执行构造函数中的代码(为这个新对象添加属性)
- 如果构造函数中没有返回其它对象,那么返回 this,即返回新对象,否则,返回构造函数中返回的对象
详情请看根据<JavaScript高级程序设计>这本书P145页