首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象
没有明确设置 this 的情况:
- 没有作为对象的方法调用
- 没有使用 call 或者 bing 或者 apply 这些情况下 this 都是指向全局的
let person = new Person('Tom', 29); // 这个时候 Person 里面的 this 指向 person
person.sayName();
Person('David',30); // 这个时候 this 的指向就会指向了 Global 全局指向, 因为没有明确 this 的指向,默认就是 Global 对象
window.sayName();
let o = new Object();
Person.call(o, 'Jim', 20); // call 把 Person 里面的 this 指向了 o
o.sayName()