JS中this的四种绑定规则按优先级从高到低为:1. new绑定(指向新实例),2. 显式绑定(call/apply/bind指定this),3. 隐式绑定(obj.method()中this指向obj),4. 默认绑定(独立调用时非严格模式指向全局对象,严格模式为undefined)。

JS 中 this 的四种绑定规则,按执行时的优先级从高到低排列是:
new 绑定优先级最高
当函数通过 new 调用时,this 指向新创建的实例对象。这条规则会覆盖其他所有绑定方式(包括 bind 生成的硬绑定),但注意:new 不能和 call/apply 同时使用,所以不构成直接冲突;而 new 可以和 bind 共存,此时 new 仍胜出。
显式绑定次之
使用 call、apply 或 bind 明确指定 this 值时,该绑定生效。其中:
- call/apply 在调用时立即生效,优先级高于隐式绑定
- bind 返回一个硬绑定函数,其 this 被固定,但可被 new 覆盖
隐式绑定排第三
函数作为对象属性被调用时,例如 obj.method(),this 指向该对象(即点号左侧的对象)。但容易“丢失”——一旦提取为独立变量再调用(如 let fn = obj.method; fn();),就退化为默认绑定。
默认绑定优先级最低
独立调用函数,无任何上下文修饰,例如 fn();:
- 非严格模式下,this 指向全局对象(window 或 global)
- 严格模式下,this 为 undefined
这个顺序不是语法规定,而是引擎在函数调用时按固定流程判断的结果:先看是否 new 调用 → 再查是否显式绑定 → 接着看是否隐式调用 → 最后 fallback 到默认绑定。


















