加载中...

在 JavaScript 中,this 是函数执行时才确定的上下文引用,其指向取决于函数被调用的方式而非定义的位置,这与多数面向对象语言中 this 恒指实例的语义不同,是语言最易混淆的特性之一。
通常归纳为几条,优先级从低到高:默认绑定,独立调用时 this 指向全局对象(严格模式下为 undefined);隐式绑定,作为对象方法调用时指向该对象(obj.fn() 中指向 obj);显式绑定,通过 call、apply、bind 强制指定;new 绑定,构造调用时指向新创建的对象。箭头函数是例外:它没有自己的 this,直接沿用定义时外层作用域的 this,且不可被 call/bind 改变。
方法被提取为回调后丢失隐式绑定(如 setTimeout(obj.fn))、DOM 事件处理器中的 this、类方法作为回调需要 bind 或改用箭头函数属性等。
现代代码大量使用箭头函数与显式传参,降低对动态 this 的依赖,可读性更高。

登录 后参与讨论
暂无讨论,来发表第一条评论吧