0

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

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

它不起作用,因为您thiswrite. 您可以使用该方法document调用以将其取回:writecall

write.call(document, "Something");

在您的第一个示例中,您只是将调用包装document.write在另一个函数中,但调用本身会保留上下文,因为您调用write的是document.

因此,如果您的目标是更短的代码,您不妨坚持使用通常的或您的包装函数!或者(感谢@Esailija)您可以在创建变量时将上下文绑定到:documentwrite

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