将document.write存储在不在JavaScript中的变量中

时间:2012-11-19 10:36:32

标签: javascript dom

以下程序按预期打印“Hello world”

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

var printAlias = print;

printAlias("Hello world");

但是当我使用与document.write相同的技术时,它不起作用。

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

有谁能告诉我我错过了什么?

1 个答案:

答案 0 :(得分:2)

它不起作用,因为您在this write方法中丢失了上下文(“document值”)。您可以使用call method调用write来取回它:

write.call(document, "Something");

在你的第一个例子中,你只是在另一个函数中包含对document.write的调用,但调用本身保留了上下文,因为你调用write作为document的方法。

所以你可以坚持使用通常的或你的包装函数,如果你的目标是更短的代码!或者(感谢@Esailija)您在创建document变量时可以bind write的上下文:

var write  = document.write.bind(document);