我想扩展圆形,矩形,直线等的属性。我能够使用原型为每个单独的形状执行此操作,但宁愿将属性添加到父类并允许这些基本形状“inheret”他们来自父类。
Kinetic.Shape.prototype.testMe=99;
如何从“矩形”
中引用此属性答案 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);