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

js的循环引用在js中是怎样一个存在,当我的程序出现循环引用我可以把它当做是问题吗,还是无需处理?

js的循环引用在js中是怎样一个存在,当我的程序出现循环引用我可以把它当做是问题吗,还是无需处理?

慕森王 2018-08-14 13:13:06
前奏:方式一    jQuery = function(selector) {        if(!(this instanceof jQuery)){            return new jQuery(selector);         }        this.selector = selector;        return this     }方式二    var $$ = jQuery = function(selector) {        //把原型上的init作为构造器         return new jQuery.fn.init( selector );     }     jQuery.fn = jQuery.prototype = {         init: function(selector) {            this.selector = selector;            return this;         },         constructor: jQuery     }     jQuery.fn.init.prototype = jQuery.fn俩种方式都能实现在使用时的无new构造实例像大家常用的那样( $()就可以得到实例),好像大家一致觉得第二种方式比较好,而jq也采用的这种方式,但是这种方式绕了一大圈最后通过继承原型链的方式(也就是jQuery.fn.init.prototype = jQuery.fn这段代码)解决了无new构造新实例,并解决了无限构造自身的问题,但最终却引来了循环引用(jq的原型上的方法的原型指向了jq的原型)的问题;问题,循环引用不知道是否可以被推荐使用。大家好像都不在意这些,大家怎么看待循环引用呢,我现在对于循环引用在js中的存在感觉到困惑?**相关信息可以参考更多前辈的详解,http://www.imooc.com/code/3398
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

jQuery用第二种不只是要解决构造的问题,还需要解决插件挂载并且挂载后的插件可以共享到this的问题,所以引入域.fn,理论上插件直接挂到jQuery.prototype也行,但是设计上的缺点是没有separation of concern,这样设计的目的,是要分离jQuery core和jQuery外部插件。


查看完整回答
反对 回复 2018-09-21
  • 1 回答
  • 0 关注
  • 824 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信