Вы можете проверить, является ли метод window.open
собственным кодом или нет, используя .toString()
и проверив, присутствует ли [native code]
.
window.open.toString()
// returns: "function open() { [native code] }"
window.open.toString().includes('[native code]')
// returns: true
window.open = function() { console.log('ding!'); }
window.open.toString().includes('[native code]')
// returns: false
Кроме того, вы можете разумно убедиться, что .toString()
не был переопределен, вызвав его из прототипа.
Function.prototype.toString.call(window.open).includes('[native code]')