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

Node.js 20.4.1中structuredClone()未保留Date类型问题咨询

structuredClone克隆Date后instanceof Date返回false的问题分析

structuredClone() 本身规范支持克隆 Date 类型对象,克隆后的对象理应保持 Date 实例身份。你遇到的问题并非操作错误,而是Node.js 20.4.1版本的已知兼容性问题。

问题原因

Node.js 20.4.1中存在structuredClone()的实现bug,克隆Date对象后会导致其原型链异常,进而使instanceof Date返回false。但实际上克隆后的对象仍具备Date的全部方法和属性,比如调用cloneObj.myDate.toISOString()依然能正常输出正确结果。

解决方案

  • 升级Node.js版本:将版本升级至20.5.0及以上,官方已修复该问题,升级后instanceof Date会正常返回true。
  • 改用可靠的类型判断方式:如果暂时无法升级,可通过Object.prototype.toString来判断类型,避免原型链影响:
    function isDate(target) {
      return Object.prototype.toString.call(target) === '[object Date]';
    }
    
    console.log(isDate(cloneObj.myDate)); // 输出 true
    
  • 手动克隆Date属性:针对仅包含Date属性的简单对象,也可以手动实现克隆逻辑:
    const cloneObj = {
      ...originalObj,
      myDate: new Date(originalObj.myDate.getTime())
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:17:06