对于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函数?
评论
发表评论