打印flase打印Uncaught RangeError: Maximum call stack size exceeded正常执行,不会报错我的问题是:既然if里面的语句永远都是false,为什么不报错?
1 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
怎么会永远是false呢? 你这里三段js,最后一段if之前先console一下就看出端倪了。
你这里声明的aquery是一个function,当你调用aquery('#box')
,首先 里面的this自然不是aquery的实例,所以false,于是return new aquery();
于是又再一次调用aquery了, 但这次,aquery是作为一个构造函数来调用的(注意到new),那么其this就是指向aquery的实例,这个时候if语句可就不是false了。于是执行后面那堆逻辑代码。
其实,这种写法就是简化每次实例化一个“类”都要new的麻烦。
至于第二段,为什么会报错呢?因为aquery作为一个普通函数或者构造函数,都是return new aquery()
, 陷入循环了
添加回答
举报
0/150
提交
取消