这是一个假设性的问题,它确实没有实际用途,但是......
假设你要做:
document.open = null;
如何将 document.open 恢复为其原始功能,这可能吗(没有用户制作的临时存储)?document.open 是否以鲜为人知的名称存储在另一个位置?谢谢!:)
这是一个假设性的问题,它确实没有实际用途,但是......
假设你要做:
document.open = null;
如何将 document.open 恢复为其原始功能,这可能吗(没有用户制作的临时存储)?document.open 是否以鲜为人知的名称存储在另一个位置?谢谢!:)
覆盖document.open
创建open
直接在document
对象上命名的变量/函数。但是,原始函数不是在对象本身上,而是在它的原型上——所以你确实可以恢复它。
该open
函数来自,HTMLDocument.prototype
因此您可以使用HTMLDocument.prototype.open
.
要直接调用它,请使用.call()
指定要在其上使用它的对象:
HTMLDocument.prototype.open.call(document, ...);
您也可以document.open
通过简单地分配它来恢复它:
document.open = HTMLDocument.prototype.open;
但是,请记住,HTMLDocument
anddocument
是宿主对象,通常最好不要弄乱它们——尤其是在 IE 中,如果你这样做,事情可能会变得混乱。
delete document.open;
这不直观,但是在自定义函数上使用 delete 关键字将恢复原始函数,至少只要原型没有被覆盖。
例子:
> console.log
function log() { [native code] }
> console.log = function() { }
function () { }
> console.log("Hello world");
undefined
> delete console.log;
true
> console.log("Hello world");
Hello world
与 document.open 和其他内置函数的工作方式相同。
var temp = document.open;
document.open = null;
然后你恢复原来的功能
document.open = temp;