封装$
2023-09-14 09:00:17 时间
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是多么脆弱啊~~
相关文章
- php 微信公众平台OAuth2.0网页授权,获取用户信息代码类封装demo
- 解决vue+axios请求报错POST http: net::ERR_CONNECTION_REFUSED,在封装的请求中统一处理请求异常的问题
- iOS开发之多图片无缝滚动组件封装与使用
- 系统封装 如何加载PE到Easyboot进行合盘
- 系统封装 如何修改别人的PE为己所用
- 第一百五十一节,封装库--JavaScript,表单验证--密码确认验证--回答验证--电子邮件验证加自动补全
- 录音权限判断封装类
- 简单的 Helper 封装 -- CookieHelper
- 简单的 Helper 封装 -- SecurityHelper 安全助手:封装加密算法(MD5、SHA、HMAC、DES、RSA)
- RTX5教程官方版本正式发布,针对CMSIS-RTOS V2封装层,也适合FreeRTOS使用(2020-03-25)
- Android App封装 —— ViewBinding
- Python语言学习:Python语言学习之面向对象编程OO(继承&封装&多态)/类&方法/装饰器的简介、案例应用之详细攻略
- 基于 zepto 的触摸函数封装
- FFMPEG之视频解码封装
- caffe项目工程化封装FRCNN
- php字符串标点等字符截取不乱吗 封装方法
- 封装、继承、多态为面向对象的三大基石
- Android 封装工具类DensityUtil(dp转px、px转dp)