0

次のプログラムは、「Helloworld」を期待どおりに出力します

var print = function(t){
  document.write(t);
};

var printAlias = print;

printAlias("Hello world");

しかし、document.writeで同じ手法を使用すると、機能しません。

var write = document.write ;
write("Something);

誰かが私が欠けているものを教えてもらえますか?

4

1 に答える 1

2

のメソッドthis内でコンテキスト (「値」)が失われているため、機能しません。メソッドを使用して呼び出して、元に戻すことができます。writedocumentwritecall

write.call(document, "Something");

最初の例では、 への呼び出しを別の関数にラップするだけですが、 のメソッドとしてdocument.write呼び出すため、呼び出し自体がコンテキストを保持します。writedocument

したがって、目的のコードが短い場合は、通常の関数またはラッパー関数を使用することもできます。または(@Esailjaに感謝)変数を作成するときにコンテキストをバインドできます:documentwrite

var write  = document.write.bind(document);
于 2012-11-19T10:38:58.687 に答える