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

标签 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>

为什么会这样,是否有解决方法?

最佳答案

语境似乎迷失了。它不与 文档 绑定(bind)。以这种方式使用它:

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

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

关于javascript - 为什么不能将文档方法保存在函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53990598/

相关文章:

javascript - 如何在 jQuery 或纯 JavaScript 中添加额外的事件处理程序?

c++ - 将二维数组传递给函数以更改值

c++ - “如何使用 vi 跳转到 C++ 项目中的函数

javascript - 禁用默认功能jquery

javascript - 如何找到具有未知值的数据属性的元素?

javascript - 在 Javascript 中测试时,如何使 html 属性顺序保持一致

javascript - JavaScript 字符串替换中的子匹配组引用是否有分隔符/消歧语法?

javascript - 在 JavaScript 中使用 null 进行排序时出现意外结果

javascript - GetHTTPSttaus 代码获取 API——React Native

javascript - 不排除元素的 DOM 遍历