nie działa instanceof i typeof dla Kinetic js

0

Witam,
piszę bo mam mały problem ze sprawdzeniem czy obiekt należy do danej klasy, a dokładnie nadklasy.

W Kinetic.js jest tak, że mamy:
Kinetic.Shape
-- Kinetic.Rect
-- Kinetic.Circle
-- etc.

I teraz jak utworzę nowy obiekt dla Kinetic.Rect i zrobię:

if(rect instanceof Kinetic.Rect) alert("tak");

to wyświetla poprawnie, a jak robię już tak:

if(rect instanceof Kinetic.Shape) alert("tak");

to nie działa.

I teraz moje pytanie co z tym zrobić? Wiem, że typeof porównuje tylko dla kilku odgórnie ustalonych typów, ale instanceof powinien załapać, że jego klasa Rect dziedziczy z klasy Shape.

Potrzebuję sprawdzać czy utworzony obiekt jest obiektem klasy ,która dziedziczy z Shape.

Bardzo proszę o pomoc.

0

Próbuj Google i instanceof inheritance js

0

Problem jest taki, że nie to jest gotowa biblioteka i nie chce jej edytować, a widzę że tutaj jest kwestia ustawiania dziedziczenia w inny sposób. Mógłbyś zerknąć na Kinetic.js?

0

Dzieje się tak, bo kinetic nie używa dziedziczenia prototypowego tylko rozszerza obiekty:

Kinetic.Rect.prototype = {
        _initRect: function(config) {
            this.createAttrs();
            Kinetic.Shape.call(this, config); // skopiowanie metod Kinect.Shape do Kinect Rect
            this.className = 'Rect';
            this._setDrawFuncs();
        }

Zamiast tego możesz użyć:

var rect = new Kinetic.Rect({
        x: 10,
        y: 10,
      });

// true
var isShape = rect.nodeType == "Shape";

1 użytkowników online, w tym zalogowanych: 0, gości: 1