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

如何将类构造函数作为参数传递?以Date构造函数为例

问题解答

首先说为什么你写的const y = x.map(Date.constructor)无法生效:
Date.constructor指向的是Function构造函数,相当于你在循环里调用new Function(v),这和创建Date对象完全无关,自然得不到想要的结果。

另外补充一点:就算你直接写x.map(Date)也不行,因为这时候是直接调用Date(v)(没有用new关键字),返回的是字符串类型的时间,而不是Date实例,不符合你的需求。

可行的解决方法

方法1:保留箭头函数(推荐)

虽然你觉得有点冗余,但这种写法在JS里是最清晰、可读性最高的,几乎不会有歧义:

const y = x.map(v => new Date(v));

方法2:封装通用构造调用函数

如果需要多次复用“把构造函数转为可直接调用的回调”的逻辑,可以封装一个工具函数:

// 封装一个工具函数,接收构造函数,返回能创建实例的函数
const createInstance = (Cls) => (...args) => new Cls(...args);

// 调用时直接传入Date构造函数
const y = x.map(createInstance(Date));

后续如果要转换其他类的实例数组,也可以复用这个createInstance函数。

方法3:使用Reflect.construct

通过Reflect.construct来调用构造函数,不过写法和箭头函数差不多,没有明显简洁性优势:

const y = x.map(v => Reflect.construct(Date, [v]));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:30:52