一个很神奇的递归问题

cc.game.onStart = function(){
var scene = new cc.Scene();
var layout = new ccui.Layout();
layout.onEnter = function(){
cc.log("--------------begin");
ccui.Widget.prototype.onEnter.call(this);
cc.log("--------------end");
};
layout.addTouchEventListener(function(){},layout);
scene.addChild(layout);
cc.director.runScene(scene);
};
cc.game.run();

这段代码,在js3.2中运行正常,在js3.7中会出现onEnter递归;
在3.7中如果把layout.addTouchEventListener(function(){},layout);这句去掉就正常了。
有没有大神来解惑下。

好吧,还是靠自己好了。
void Node::onEnter()
{
if (_onEnterCallback)
_onEnterCallback();

if (_componentContainer && !_componentContainer->isEmpty())
{
_componentContainer->onEnter();
}
#if CC_ENABLE_SCRIPT_BINDING
if (_scriptType == kScriptTypeJavascript)
{
if (ScriptEngineManager::sendNodeEventToJS(this, kNodeOnEnter))
return;
}
#endif

PS:
layout.addTouchEventListener(function(){},layout);调用后,_componentContainer增加了一个CallBackComponent;

_componentContainer->onEnter();调用后,使得isCalledFromScript()为true.
继而ScriptEngineManager::sendNodeEventToJS(this, kNodeOnEnter)成功调用js层的layout.onEnter