Имитировать, какой родной объект не существует

Вот ситуация: у меня есть проверка на существующий класс, как:

('Promise' in window) // true/false`

И я хочу заставить вернуть ложь или истину, могу ли я это сделать? Да, я могу проверить это другим способом, например, `

window.Promise = undefined;
window.Promise === undefined;

Или что-то вроде этого, но я могу как-то удалить этот объект или смоделировать что-то для оператора "in"?

Я проверяю спецификацию и код v8, есть оператор "in", просто вызов оператора "HasProperty", реализация которого на C++. Я знаю "hack" с поддельными методами toString/valueOf:

obj = {
  toString: function(){ return 'myName'; }
},
obj2 = {};
obj2[obj] = 1; // Object {myName: 1}

Может быть, я могу использовать это каким-то образом? Но, посылая строку "Обещание", я не могу просто подделать ее таким образом… Может быть, существует какой-то способ подделать "HasProperty"?

0 ответов

Другие вопросы по тегам