怎么理解函数里又new一个对象?

clipboard.png
经常看到上面这种形式的代码,一直似懂非懂的感觉。

                                          更新

clipboard.png

阅读 2.9k
3 个回答

这个函数自己倒是挺简单的:function的返回值就是一个对象,对象是通过new语句生成的。

不太好理解的地方可能是:new的后面不是跟了一个简单的类型(其实也就是函数名),而是一个prototype里的init方法,因为init在原型链里面,所以它其实就应该是aQuery所有实例的一个方法,这里是当构造函数用的,所以new这个init,就相当于new了一个aQuery对象。

不过前面var定义的对象也叫做aQuery有点奇怪,这样本句执行完,就把之前的aQuery定义覆盖了,没有上下文,不知其深意

就是返回一个对象啊。。。

这是一种典型的工厂模式,http://www.cnblogs.com/TomXu/..., 你可以函数的不同参数返回需要的对象类型。

真的没必要纠结这种写法,在框架方面 jQuery崇尚 单一入口提供强大功能。 $(dom)的写法比 new jQuery()的写法优雅很多。毕竟$符号到处都用。 而强大而简洁的Vue框架在构建实例时则是 用的 new Vue({})。代码的不同写法就像眼镜,你知道你什么时候需要它。现阶段理解其能解决的问题就好了。

推荐问题