У меня есть класс Foo
со статическим методом, который сравнивает this
с Foo
, и по какой-то причине результат этого сравнения составляет 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
Как это можно сделатьбыть?Я подозреваю, что это связано с тем, что Greasemonkey выполняет пользовательские скрипты в песочнице с повышенными привилегиями, но даже тогда я не могу понять, почему это выдает false
.Кроме того, выходные данные изменяются на true
, если функция и класс не назначены на window
:
class Cls {};
function func() {};
console.log(Cls === Cls); // output: true
console.log(func === func); // output: true
Что здесь происходит?