为了账号安全,请及时绑定邮箱和手机立即绑定

关于“通过new把init方法与ajQuery给分离成2个独立的构造器” 的疑问

"init是ajQuery原型上作为构造器的一个方法,那么其this就不是ajQuery了" --> this是ajQuery.prototype.init()创造的实例。

"所以这里通过new把init方法与ajQuery给分离成2个独立的构造器" --> 这个的确不是很了解。

new ajQuery() 和 ajQuery() 的结果都是一样的(在火狐浏览器控制台下查看), 那ajQuery的原型方法理论上 new ajQuery()创造的实例是无法使用这个原型里面的方法属性的,只能使用ajQuery.prototype.init()这个函数对应的原型里面的方法属性,


问题: ajQuery的构造器好像实际上是没什么用了, new ajQuery()生成的实例 会被 返回的 new ajQuery.prototype.init()  生成的实例覆盖了?



正在回答

1 回答

这是跟后面的静态与实例设计有关系

简单的说 jQuery底层是扩展的静态方法,然后共享给实例调用

开发者通过通过选择器创建的jQuery对象,是实例对象,在原型上大部分的接口都是用来做一个过滤包装的处理,真正的处理都是通过静态方法实现的。


0 回复 有任何疑惑可以回复我~
#1

hnull 提问者

恩,后面找资料看了下 的确被覆盖了
2014-12-31 回复 有任何疑惑可以回复我~
#2

hnull 提问者 回复 hnull 提问者

回头来看,是2个独立的构造器,但是new生成的实例是一样的,后面提到的 jquery.prototype.init.prototype = jquery.prototype 就是使无new 变成 有new一样的效果, $('#abc') 就和 new $('#abc') 一样的效果
2016-01-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于“通过new把init方法与ajQuery给分离成2个独立的构造器” 的疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信