You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可以在调用构造函数之前获取到'this'对象?

ES6类出现前:函数构造函数的手动实例化技巧

在ES6引入class语法糖之前,JavaScript里一直用普通函数来充当构造函数,比如定义一个构造函数:

function MyClass(a, b) {
  // 构造函数逻辑,比如给this绑定属性
  this.a = a;
  this.b = b;
}

我们最常用的实例化方式是用new关键字:

let thisObj = new MyClass("A", "B");

但你知道吗?还有一种手动模拟new行为的写法,和上面的代码完全等效,而且能让你在调用构造函数之前就拿到this对象:

  • 首先,基于构造函数的原型创建一个空实例对象:

    let thisObj = Object.create(MyClass.prototype);
    

    这一步就完成了new操作的第一个环节——生成一个原型指向MyClass.prototype的对象,也就是后续会作为构造函数里this的那个实例。

  • 接着,手动调用构造函数,把刚才创建的thisObj绑定为构造函数内部的this,同时传入参数:

    MyClass.call(thisObj, "A", "B");
    

    这一步就对应new操作里执行构造函数的过程,让构造函数完成对实例的初始化。

这种拆解new过程的技巧,核心价值就是能提前获取到实例对象。比如某些场景下,你需要在构造函数执行初始化逻辑之前,给实例添加一些自定义属性或者做前置处理,这种方法就能满足需求。

内容的提问来源于stack exchange,提问作者Paleo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:22:02