对于this指向性的理解

 

1. 简单地调用函数时,

   ① 严格模式下,函数内的this会被绑定到undefined上。

   ② 非严格模式下,函数内的this会被绑定到全局对象window/global上。

      

2. 通过上下文对象调用函数时,函数内的this会被绑定到该对象上。


   this指向的是最后调用它的对象。


   一道面试题。


   如果需要o2.fn()返回'o2',且不使用bind/call/apply呢?


3. 通过bind/call/apply方法调用函数时,函数内的this会被绑定到指定参数的对象上。


   一道面试题。


4. 使用new方法调用构造函数时,构造函数内的this会被绑定到新创建的对象上。


   如果构造函数中显式地返回了一个值,

   ① 如果该值是一个引用类型,那么直接返回该值。

   ② 如果该值是一个基本类型,那么正常返回实例化对象。


5. 箭头函数中,this的指向由外层作用域决定。


6. this的优先级问题

   ① 显式绑定:bind/call/apply/new对this进行直接绑定。(优先级高)

   ② 隐式绑定:根据调用关系确定this的指向。(优先级低)

   new的优先级高于bind。


7. 面试题:如何实现一个bind函数?



8. 面试题:如何实现一个apply函数?



至此,我已经被完全绕晕了,大概只能自我安慰下,“答题的准确率不重要,解决问题的思路更重要,大不了就打印下吧!”【完】

评论