什么是矩形,圆形等的父类

时间:2014-02-13 21:47:58

标签: class parent kineticjs

我想扩展圆形,矩形,直线等的属性。我能够使用原型为每个单独的形状执行此操作,但宁愿将属性添加到父类并允许这些基本形状“inheret”他们来自父类。

Kinetic.Shape.prototype.testMe=99;

如何从“矩形”

中引用此属性

1 个答案:

答案 0 :(得分:0)

Circles,Rects等的父类是Kinetic.Shape

Kinetic.Shape的父类是Kinetic.Node

正式地,您可以使用Kinetic.Util.extend向Kinetic基类添加属性/方法。

但是“幕后”这个extend方法只是将基类属性/方法附加到新类的.prototype。

所以你的Kinetic.Shape.prototype.testMe真的和扩展课程的“官方”方式一样好。

KineticJS不实现继承,因此您无法向Kinetic.Shape基类添加属性并让其子级继承这些属性。

您可以使用以下代码自动将新属性添加到Kinetic.Shape及其所有派生形状:

var Shapes={

    shapes:[
        Kinetic.Arc,Kinetic.Circle,Kinetic.Ellipse,
        Kinetic.Image,Kinetic.Line,Kinetic.Rect,Kinetic.Ring,
        Kinetic.Sprite,Kinetic.Text,Kinetic.Wedge,Kinetic.Shape
    ],

    add:function(key,value){
        for(var i=0;i<this.shapes.length;i++){
            this.shapes[i].prototype[key]=value;
        }
    }

}

// add some test properties to all the Kinetic.Shape's

Shapes.add("testMe",99);
Shapes.add("meToo",101);