This!
先写下结论:this的指向,是在调用函数时根据执行上下文动态所确定的。
① 在函数体中,简单调用该函数时(非显式/隐式绑定下), 严格模式下this绑定到undefined,否则绑定到全局对象window/global;
② 一般构造函数new调用,绑定到新创建的对象上;
③ 一般由call/apply/bind方法隐式调用,绑定到指定参数的对象上;
④ 一般由上下文对象调用,绑定在该对象上;
⑤ 箭头函数中,根据外层执行上下文绑定的this决定this指向。
在执行函数时,如果函数中的this是被上一级的对象所调用,那么this指向的就是上一级的对象;否则指向全局环境。
构造函数中情况较为不一样:
function Foo () {
this.user = 'name'
const o = {}
return o
}
const instance = new Foo()
console.log(instance.user)
这次打印将会输出undefined,此时instance是返回的空对象
function Foo () {
this.user = 'names'
return 1
}
这次将会输出names,也就是说这次输出时返回的是木变对象的实例this
结论:如果构造函数中显式返回一个值,且返回的是一个对象,那么this就指向这个返回的对象;如果返回的不是一个对象,饭吗this仍然指向实例。
this优先级相关
我们常常把通过call、apply、bind、new对this绑定的情况称为显式绑定;根据调用关系确定的this指向称为隐式绑定
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律