先来一段代码
function Fn(name){
this.name = name;
console.log(this);
console.log(this.name);
}
var obj = new Fn("a");
// 分别输出 Fn a
var fn = Fn("b");
// 分别输出 window b
使用new操作符时整个过程包括了5个步骤:
1. 创建一个对象
var obj = new Object();
- 将对象的proto属性只想构造函数Object的原型对象
obj.__proto__ = Object.prototype;
- 将this指针指向该对象
- 执行构造函数内部代码
this.name = name;
console.log(this.name);
- 返回该对象
return obj;
函数中this具体指向哪个对象根据调用模式不同而不同:
- 构造函数模式
- 方法模式
- 函数模式
- Apply/call模式