以下程序按预期打印“Hello world”
var print = function(t){
document.write(t);
};
var printAlias = print;
printAlias("Hello world");
但是当我使用与document.write相同的技术时,它不起作用。
var write = document.write ;
write("Something);
有谁能告诉我我错过了什么?
答案 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);