Class 矩形、圆等的父类是什么

Class 矩形、圆等的父类是什么,class,parent,kineticjs,Class,Parent,Kineticjs,我想扩展圆、矩形、线等的属性。我可以使用prototype对每个单独的形状进行扩展,但更愿意将属性添加到父类中,并允许这些基本形状从父类中“继承”它们 Kinetic.Shape.prototype.testMe=99; 如何从“矩形”引用此属性?圆、矩形等的父类是动态的。形状 Kinetic.Shape的父类是Kinetic.Node 正式地说,您可以使用Kinetic.Util.extend向Kinetic基类添加属性/方法 但是“幕后”这个扩展方法只是将基类属性/方法附加到新类的.pro

我想扩展圆、矩形、线等的属性。我可以使用prototype对每个单独的形状进行扩展,但更愿意将属性添加到父类中,并允许这些基本形状从父类中“继承”它们

Kinetic.Shape.prototype.testMe=99;

如何从“矩形”引用此属性?圆、矩形等的父类是动态的。形状


Kinetic.Shape的父类是Kinetic.Node

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

但是“幕后”这个扩展方法只是将基类属性/方法附加到新类的.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);
var形状={
形状:[
动能,弧,动能,圆,动能,椭圆,
动能,图像,动能,直线,动能,直线,动能,环,
动态。精灵,动态。文本,动态。楔形,动态。形状
],
添加:功能(键、值){

对于(var i=0;i
rect.testMe
)来说似乎足够简单。但是“dynamic.Circle instanceof dynamic.Shape”的计算结果为falseYes,
instanceof
将为false,因为dynamic没有给孩子父母的原型。相反,它会“扩展”通过将所有父对象的原型属性/方法添加到子对象的原型中。如下:
for(var key in parent.prototype){if(!(key in child.prototype)){child.prototype[key]=parent.prototype[key];}}
我想扩展它们的父类“Shape”,而不是扩展每个圆、矩形、线等属性并从子类引用这些属性。如何从子类引用这些属性?当我尝试使用“alert(circle.testMe);”引用此属性时它返回时未定义??我缺少一些东西。KineticJS未实现继承,因此您无法将属性添加到Kinetic.Shape基类并让其子类继承这些属性(除非您希望将这些属性添加到源代码中).我为may answer添加了代码,可以自动向动能.Shape及其派生形状添加属性。虽然不如真正的继承那样令人满意,但它解决了这一需要:-\