============下面的日志无限循环下去,基础类应该是没有_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吗
