我正在使用原型继承,Circle和Square对象都继承自RootShape对象。我正在使用EaselJS并且不确定我遇到的行为是否特定于原型继承,EaselJS库或两者的混合。
您可以在此处看到我的问题:http://fiddle.jshell.net/sdg9/UNY6E/
当我向Circle或Square原型添加事件监听器(特别是“pressmove”监听器)时,它可以正常工作。所有圆形对象都响应圆形原型监听器,所有方形对象也使用方形原型监听器。
当我向RootShape原型添加一个事件监听器时,Circle和Square都继承了我遇到的奇怪行为。 Square事件触发Circle侦听器,反之亦然。事实上,所有3个听众(在RootShape,Circle和Square上)都会被触发。我不认为原型链下面的物体会以这种方式发生冲突。是否有一种替代方法可以在RootShape对象上使用eventListener而不会导致Square和Circle触发彼此的侦听器?
答案 0 :(得分:2)
您定义的所有事件侦听器似乎都会添加到您的RootShape原型中,而不是每个子原型中。解决方案是在初始化每个子原型时添加事件侦听器。