Имитировать, какой родной объект не существует
Вот ситуация: у меня есть проверка на существующий класс, как:
('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"?