私は、RootShape オブジェクトから継承する Circle および Square オブジェクトのプロトタイプ継承を使用しています。私は EaselJS を使用していますが、発生している動作がプロトタイプの継承、EaselJS ライブラリ、またはその 2 つの組み合わせに固有のものであるかどうかはわかりません。
ここに私の問題が示されているのを見ることができます: http://fiddle.jshell.net/sdg9/UNY6E/
イベント リスナー (具体的にはリスナー) を Circle または Square プロトタイプに追加すると、pressmove
期待どおりに動作します。すべての circle オブジェクトは circle プロトタイプ リスナーに応答し、すべての square オブジェクトは square プロトタイプ リスナーと同様に応答します。
RootShape
Circle と Square の両方が継承するプロトタイプにイベント リスナーを追加すると、奇妙な動作が発生します。Square イベントは Circle リスナーをトリガーし、その逆も同様です。実際、3 つのリスナーすべて ( on RootShape
、Circle
、およびSquare
) がトリガーされます。プロトタイプチェーンのさらに下にあるオブジェクトがこのように競合するとは思いませんでした。eventListener
オブジェクトにを持ちRootShape
、Square と Circle が互いのリスナーをトリガーしないようにするための代替アプローチはありますか?