Почему функции и классы, назначенные для `window`, не равны в скрипте GreaseMonkey? - PullRequest
0 голосов
/ 14 октября 2018

У меня есть класс 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

Что здесь происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...