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

Google Apps Script库与本地脚本isObject函数行为差异问题

问题根源

Google Apps Script(GAS)的独立库与调用它的业务脚本,运行在完全隔离的全局执行上下文环境中:

  • 调用侧脚本中用对象字面量{test: 1}创建的对象,其constructor属性指向的是调用侧上下文的全局Object构造函数
  • 当该对象传入库的isObject方法时,代码中value.constructor === Object里的Object,是库上下文的全局Object构造函数

两个Object虽然功能实现、打印输出完全一致,但属于不同上下文下的独立函数实例,因此===全等判断返回false,这就是两次运行结果不一致的核心原因。

修复方案

如果需要兼容跨库调用的普通对象判断,替换掉依赖当前上下文全局构造函数的判断逻辑,改用不受上下文影响的toString标签判断即可,修改后的参考代码:

function isObject(value) {
  return value && typeof value === 'object' && Object.prototype.toString.call(value) === '[object Object]';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:36:04