为什么3.15.1JS继承会无限循环下去,请看出错实例

============下面的日志无限循环下去,基础类应该是没有_super才对,但是他的_super指向了自己

你用的是super不是_super

var mycls=cc.Class.extend({
ctor:function(){
var that=this;
console.log(“mycls ctor super:”+that._super);
console.log("-----this is parent class ctor—>");
that._super();//这里的super 指向了自己,导致一直循环调用了下去。应该是没有_super才对。
}
});

var mycls2=mycls.extend({
    ctor:function(){
        var that2=this;
        console.log("mycls2 ctor _super:"+that2._super);
        if(that2._super){
            console.log("mycls2 do call super ctor------->")
            that2._super();
        }

    }
});
var instance=new mycls2();
return;

我写的时候有下划线,保存编辑后没有显示下划线

this._super();为啥不写在ctor的一开头

开头打印一个信息而已,这个不影响的。

if(that2._super),这个that2._super是个啥东西

就是mycls实例的ctor

that2有_super这个属性吗

写的这么乱,这么不规范是为了啥

呃 这只是一个最简单的测试案例 为什么要that2 是因为我以为和前面的that重叠了(理论上是不会的)
所以确保不是一个东西,把名字改了一下。。

第二个类,继承第一个类,第二个类的实例化this是第二个类的,就算调用了第一个类的构造,他的实例指针还是第二个类,this没有发现变化的情况下,this._super都是相同的,这个没毛病

你仔细看下 cc.Class.extend的实现,等你真正打印出你真正调用的方法时,会颠覆你现在的认识的
比如你随便new 一个子类, 去打印下子类的继承方法,看看那个func还是你所认为的func吗:relaxed: