これは仮説的な質問であり、実際には実用的ではありませんが...
あなたがしなければならなかったとしましょう:
document.open = null;
document.open を元の機能に復元するにはどうすればよいですか? これは可能ですか (ユーザーが作成した一時ストレージなしで)? document.open はあまり知られていない名前で別の場所に保存されていますか? ありがとうございました!:)
これは仮説的な質問であり、実際には実用的ではありませんが...
あなたがしなければならなかったとしましょう:
document.open = null;
document.open を元の機能に復元するにはどうすればよいですか? これは可能ですか (ユーザーが作成した一時ストレージなしで)? document.open はあまり知られていない名前で別の場所に保存されていますか? ありがとうございました!:)
上書きすると、オブジェクトに直接document.open
指定された変数/関数が作成されます。ただし、元の関数はオブジェクト自体ではなく、そのプロトタイプにあったため、実際に復元できます。open
document
open
関数は from であるため、HTMLDocument.prototype
を使用してアクセスできますHTMLDocument.prototype.open
。
直接呼び出すには、使用.call()
するオブジェクトを指定します。
HTMLDocument.prototype.open.call(document, ...);
document.open
割り当てるだけで復元することもできます。
document.open = HTMLDocument.prototype.open;
ただし、HTMLDocument
とdocument
はホスト オブジェクトであり、通常はそれらをいじらないことをお勧めします。特に 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;