document.querySelector赋值给一个变量,为啥调用这个变量会报错?

发布于 2022-09-13 01:26:01 字数 378 浏览 15 评论 0

看到简化dom选取的一段操作如下

const $ = document.querySelector.bind(document)
// 以后就可以像JQ一样选取某个元素下的子元素了
$("#parent").querySelector(".son")

但是为何要使用bind来重新返回一个函数呢?为啥不能直接将document.querySelector赋值给$变量呢?我试了下会报错如下

const $ = document.querySelector
$("#parent").querySelector(".son")


大佬们,求教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一杆小烟枪 2022-09-20 01:26:01
let foo = {
   bar: function() {
       console.log('This is: ', this);

       if (this !== foo) {
           throw new TypeError('Illegal invocation');
       }
   }
}

// 1. 直接调用
foo.bar();

// 2. 赋值给一个变量后调用
let fn1 = foo.bar;
fn1();

// 3. 赋值给一个变量同时 bind 后调用
let fn2 = foo.bar.bind(foo);
fn2();

看了这个例子你就应该明白了。

如果不清楚为啥会是这个结果,你应该恶补 this 上下文的相关知识了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文