解决不new 自己

来源:2-2 分离构造器

qq_猛虎嗅蔷薇_0

2016-05-19 09:50

首先,要解决无new,拿么只能在函数里边new,但是new自己容易出现无限递归自己。那么就要想办法,不能new 自己,那能不能new别人,然后让这个人拥有和自己一样的属性和方法,只是换了个名字而已,当然是可以的。如是就有了new ajQuery.fn.init( selector ). 在init()方法里返回this,然后将init.prototype=ajQuery.prototype,这样,init()返回的this 就拥有了ajQuery所有的属性和方法。绕了一个圈,目的就为了不new自己也能得到和自己拥有相同属性和方法的实例对象。

写回答 关注

1回答

  • Whistle2
    2016-05-19 22:01:21

    还有就是,如果把所有的jQuery实例方法都挂载在 jQuery的原型下面,那每个jQuery对象都直接继承这写方法,太占内存,所以强制new init,每个实例对象可以通过init和jQuery的原型链来查找那些实例方法。

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84047 学习 · 280 问题

查看课程

相似问题