zoukankan      html  css  js  c++  java
  • 封装$

    let $ = document.body.querySelectorAll;
    $('#wrap'); //报错:Uncaught TypeError: Illegal invocation

    有些小伙伴应该尝试过以上的操作吧~~这个是为什么呢?报错也说得不明不白,只是说“不合法的调用”,下面我来解释一下吧~

     再来看下这个:

    let haha = console.log;
    haha('12345'); //12345

    这里没有报错,这是为什么呢?都是用一个变量装载系统内置的函数,为什么一个可以运行,一个就报错呢?

    上网查了一下解决方法,很简单,就是把querySelectorAll绑定到对应的对象上:

    let $ = document.querySelectorAll.bind(document);
    $('#wrap'); //正常返回了,不报错

    这样就可以大概猜测到为什么报错了,因为querySelectorAll里面有对this的调用,这也是js的痛点,this是多么脆弱啊~~

  • 相关阅读:
    ftp命令行敲不了
    转载 vsftpd安装
    ftp上传不了故障
    mysql导入数据方法和报错解决
    time使用方法
    python 进程Queue
    python 进程事件
    python 进程信号量
    python 进程锁
    python 守护进程
  • 原文地址:https://www.cnblogs.com/amiezhang/p/7998450.html
Copyright © 2011-2022 走看看