this指向
- 构造函数或者构造函数原型对象中 this 指向构造函数的实例;
- 如果函数调用时被apply,call, bind方法强绑定了this, this就指向强绑定的对象(apply等函数的第一个参数);
- 全局作用域或者普通函数中 this 指向全局对象 window;
- 方法调用中谁调用 this 指向谁;
- 箭头函数中的this指向其上一层作用域中的this;
创建对象new操作
function Func(){}
let func = new Func();
1. 创建一个空对象
let obj = new Object();
2. 链接到构造函数的原型
obj.__proto__ = Func.prototype;
3. 绑定this值(让Func中的this指向obj,并执行Func的函数体)
let result = Func.call(obj);
4. 返回新的对象
if(typeof(result) === "object"){
func = result;
} else {
func = obj;
}
附: