sovrascrittura document.open
crea una variabile/funzione denominata open
direttamente sull'oggetto document
. Tuttavia, la funzione originale non era sull'oggetto stesso ma sul suo prototipo, quindi è possibile ripristinarla.
La funzione open
è da HTMLDocument.prototype
quindi è possibile accedervi utilizzando HTMLDocument.prototype.open
.
chiamarlo direttamente, utilizzare .call()
per specificare l'oggetto da utilizzare su:
HTMLDocument.prototype.open.call(document, ...);
È possibile anche ripristinare document.open
è semplicemente assegnandolo:
document.open = HTMLDocument.prototype.open;
Tuttavia, ricorda che HTMLDocument
e quindi document
sono oggetti host e di solito è una buona idea non confonderlo - specialmente in IE è probabile che le cose vadano in tilt se si fa così.
Interessante - Diciamo che non hai la temperatura! C'è un altro modo? –
è necessario creare un riferimento in qualche modo ... ad es. eseguire una funzione anonima eseguibile auto eseguendo immediatamente documento.open come argomento – fcalderan
Mi chiedevo soprattutto se il browser memorizza un secondo riferimento a sé stante –