为什么文档方法不能保存在函数中?

时间:2018-12-31 18:57:33

标签: javascript function dom

在JavaScript中,您可以设置变量以容纳某些函数并使用它们,如下所示:

var log = console.log;
log('foo'); 

但是出于某些奇怪的原因,您无法在大多数(如果不是全部)文档方法(例如querySelector)上执行该操作:

var select = document.querySelector;

// causes the error: Uncaught TypeError: Illegal invocation
select('p'); 
<p>...</p>

这是为什么,并且有解决方法吗?

1 个答案:

答案 0 :(得分:2)

上下文似乎迷路了。它不受document的约束。以这种方式使用它:

var select = document.querySelector.bind(document);
// Works!
console.log(select('p'));
<p>...</p>

您可以在JavaScript:What object javascript function is bound to (what is its "this")?中看到函数绑定的内容。