为什么分配给`window`的函数和类在GreaseMonkey脚本中不相等?

Ara*_*Fey 6 javascript greasemonkey-4

我有一个类Foo与比较静态方法thisFoo,出于某种原因,该比较器的输出是false:

// ==UserScript==
// @name     GreaseMonkey test
// @version  1
// @grant    none
// @include  *
// ==/UserScript==

window['Cls'] = class {};
window['func'] = function() {};

console.log(Cls === Cls);  // output: false
console.log(func === func);  // output: false
Run Code Online (Sandbox Code Playgroud)

怎么会这样?我怀疑这与Greasemonkey在具有提升权限的沙箱中执行用户脚本这一事实有关,但即便如此,我也无法理解为什么会输出false.此外,true如果函数和类未分配给输出,则输出将更改为window:

class Cls {};
function func() {};

console.log(Cls === Cls);  // output: true
console.log(func === func);  // output: true
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?