码迷,mamicode.com
首页 > 其他好文 > 详细

封装$

时间:2017-12-07 13:21:26      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:sele   document   his   doc   调用   一个   cat   方法   ora   

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是多么脆弱啊~~

封装$

标签:sele   document   his   doc   调用   一个   cat   方法   ora   

原文地址:http://www.cnblogs.com/amiezhang/p/7998450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!