Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript `Math`每个结构化克隆算法都可以克隆吗?_Javascript_Google Chrome_Indexeddb - Fatal编程技术网

Javascript `Math`每个结构化克隆算法都可以克隆吗?

Javascript `Math`每个结构化克隆算法都可以克隆吗?,javascript,google-chrome,indexeddb,Javascript,Google Chrome,Indexeddb,以下内容不会在Chrome中抛出DataCloneErrorDomeException: self.postMessage(Math, '*'); 这是每个人期望的行为吗 在一个(当前缺少故障导致测试考虑数学< /代码>)作为可克隆(虽然无效)密钥路径的情况下,所以我很好奇… < p> 数学< /COD>函数属性不可枚举(见和),因此它们将跳过./p> 在上面注释中的Beth示例中,func最终出现在原型上,因此它不是“自己的属性”,因此也被忽略 似乎是FF中的一个bug。它在FF中抛出了一个

以下内容不会在Chrome中抛出
DataCloneError
DomeException

self.postMessage(Math, '*');
这是每个人期望的行为吗


在一个(当前缺少故障导致测试考虑<代码>数学< /代码>)作为可克隆(虽然无效)密钥路径的情况下,所以我很好奇…

< p> <代码>数学< /COD>函数属性不可枚举(见和),因此它们将跳过./p> 在上面注释中的
Beth
示例中,
func
最终出现在原型上,因此它不是“自己的属性”,因此也被忽略


似乎是FF中的一个bug。

它在FF中抛出了一个错误,我会投票支持chrome bug,尽管我没有确切的参考资料。(但我认为所有带有属性的对象都是不可克隆的)。仍然不确定谁在FF和Chrome之间遇到了麻烦,但我能够创建另一个行为相同的对象:
var Beth=Object.create({v:1234,func:{=>{}})
。但这一次FF和chrome都很乐意发送它(作为一个空对象)。也许Chrome确实是这样创建数学的,而FF并没有…请原谅我缺乏更深入的调查,但我可以问一下,是否也有关于宿主对象的东西,或者更确切地说,某个类别我忘记了适用于内置JavaScript对象的名称,如
Math
,通常不允许克隆它们?我起初对“平台对象”是否适用感到困惑,但后来我看到了这一点“JavaScript规范中定义的对象由StructuredClone抽象操作直接处理。”其中定义了
Math
。然后,我被“外来对象”的特殊处理(以及ECMA-262声明的事实)绊倒了ECMAScript实现可能支持对外来函数对象的求值,这些函数对象的求值行为是以某种实现定义的可执行代码形式表示的,而不是通过ECMAScript代码。”)但是由于
Math
不是一个函数,而且我没有看到
Math
被列为这样的类型,我发现它们不适用。这是非常明显的!)
Object.getOwnPropertyDescriptor(Math, 'abs').enumerable