gpt4 book ai didi

javascript - 在内容脚本和主附加脚本之间传递 RegExp 对象

转载 作者:行者123 更新时间:2023-12-02 19:26:06 25 4
gpt4 key购买 nike

我遇到一个问题,我在内容脚本中创建一个 RegExp 对象,并使用 self.port.emit()< 将其作为对象的一部分传递回主脚本。一路走来,它似乎失去了它作为 RegExp 的身份以及它的 toString 功能。以下内容在主脚本中返回 false,但在内容脚本中返回 true:

Object.prototype.toString.call(regexp) == '[object RegExp]';
regexp instanceof RegExp;

有趣的是,对于以相同方式传递的数组,以下情况是正确的:

Object.prototype.toString.call(array) == '[object Array]'; 

我错过了什么吗?

最佳答案

当您发送消息时,附加 SDK 不会传递对象,只会传递字符串 - 它本质上调用 JSON.stringify()一侧,然后 JSON.parse()在另一。结果很容易预测:

console.log(JSON.stringify(new RegExp()));

这将为您提供“{}”。换句话说,JSON.stringify() 将“自定义”对象视为没有任何属性的普通对象,对象原型(prototype)等将被忽略。您在主代码中获得的是一个普通对象,与调用 new Object() 相同。

如果您需要将正则表达式传递到主代码 - 发送regexp.source,请在另一端创建一个实际的正则表达式。发送实际对象是不可能的。

关于javascript - 在内容脚本和主附加脚本之间传递 RegExp 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com