我想擴展圓,矩形,線等的屬性我能夠使用原型爲每個單獨的形狀做到這一點,但寧願將屬性添加到父並允許這些基本形狀從父類「嵌入」它們。矩形,圓圈等的父類是什麼
Kinetic.Shape.prototype.testMe=99;
我怎麼會從說一個 「矩形」
我想擴展圓,矩形,線等的屬性我能夠使用原型爲每個單獨的形狀做到這一點,但寧願將屬性添加到父並允許這些基本形狀從父類「嵌入」它們。矩形,圓圈等的父類是什麼
Kinetic.Shape.prototype.testMe=99;
我怎麼會從說一個 「矩形」
父類的圈子,Rects等引用此屬性是Kinetic.Shape
父類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);
但「Kinetic.Circle instanceof Kinetic.Shape」評估爲false – bigt95nt0110
是的,'instanceof'將是false,因爲Kinetic不會給孩子父母的原型。相反,它通過將所有父級的原型屬性/方法添加到孩子的原型來「擴展」。像這樣:for(var key in parent.prototype){if(!(key in child.prototype)){child.prototype [key] = parent.prototype [key];}} ' – markE
而不是擴展每個圓,矩形,線等屬性我想擴展它們的父類「Shape」並引用這些子類的屬性。你會如何從兒童課堂中引用這些內容? – bigt95nt0110
'rect.testMe'?看起來很簡單。 – user2357112