JavaScript ułatwia nadpisanie właściwości i funkcji obiektu globalnego. Chciałbym znaleźć sposób na sprawdzenie, czy oryginalna wersja właściwości globalnej została zastąpiona.Sprawdź, czy właściwość/funkcja globalna została nadpisana w JavaScript
Rozważmy ktoś oddanie tego w ich HTML:
<script type="text/javascript">
window.encodeURIComponent = eval;
</script>
<script type="text/javascript" src="myscript.js"></script>
Jeśli myscript.js wywołuje funkcję encodeURIComponent gdzieś będzie teraz zachowywać się nieprzewidywalnie. Czy istnieje sposób, aby sprawdzić wewnątrz myscript.js, czy ktoś nadpisał tę funkcję, zanim ją wykorzystam?
To naprawdę sprytny sposób na zrobienie tego w różnych przeglądarkach. – sg3s
Dzięki Stan. Czy wiesz również, jak zapewnić, że własność toString 'eval' nie została nadpisana przez coś takiego jak funkcja' function() {return "encodeURIComponent() {[native code]}"; } '? –
zamiast parsowania i wywoływania 'toString' możesz po prostu zrobić to' window.encodeURIComponent.name' .. ANYWAY istnieje bardziej precyzyjna metoda osiągnięcia tego http://stackoverflow.com/a/10266791/474290 –