new绑定让this指向新创建的实例对象:引擎执行四步——创建空对象、设置原型、将this绑定至该对象并执行函数体、按规则返回结果;其优先级最高,因在函数执行前就硬性指定this,覆盖其他绑定;箭头函数无prototype且无this,不能被new调用。

new 绑定让 this 指向新创建的实例对象
当你用 new 调用一个函数时,JavaScript 引擎会自动执行四步操作:创建空对象、设置原型、绑定 this、返回结果。其中最关键的一步,就是把函数体内的 this 指向这个刚创建出来的空对象。也就是说,this 不再是全局对象、undefined 或某个传入的对象,而是全新的实例。
底层四步执行流程
引擎实际执行过程如下:
- 创建一个全新的空对象(例如
{}) - 将该对象的
[[Prototype]]内部属性指向构造函数的prototype - 将函数体内的 this 绑定到这个新对象,并执行函数体(即执行
this.xxx = xxx等语句) - 若函数没有显式返回一个对象,则默认返回这个新对象;若返回的是对象,则直接返回该对象(此时 this 实例被丢弃)
为什么 new 绑定优先级最高?
因为它是 JavaScript 引擎在调用阶段最“早介入”的绑定机制——在函数体开始执行前,this 就已经被硬性指定为新对象了。后续任何显式绑定(比如 fn.bind(obj).call(another))或隐式绑定(比如 obj.fn())都无效。甚至对一个已 bind 的函数再用 new,this 也会被重置为新实例,而不是 bind 时传入的那个对象。
箭头函数不能参与 new 绑定
箭头函数没有自己的 this,也没有 prototype 属性,因此无法作为构造函数使用。一旦写成 new (() => {}),运行时会立即抛出 TypeError: xxx is not a constructor。这也侧面印证:new 绑定只作用于具有构造能力的普通函数,它依赖的是函数内部的执行上下文初始化逻辑,而非语法糖。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











