gpt4 book ai didi

javascript - 从一个对象到另一个 JavaScript (KineticJS) 的引用原型(prototype)方法

转载 作者:行者123 更新时间:2023-12-02 17:01:39 25 4
gpt4 key购买 nike

我尝试在 KineticJS 中创建方法。我添加了这段代码:

Kinetic.Circle.prototype.test = function(){
alert(1);
}

它正在工作,但我尝试添加此方法,不仅适用于圆形,还适用于图层等。所以我尝试使用这段代码

Kinetic.Node.prototype.test = function(){
alert(1);
}

我的控制台出现错误:Uncaught TypeError: Object # has no method 'test'

我尝试在 Google 中搜索一些解决方案,但找不到。

@已编辑对于贝尔吉:)我有一个带有层的数组,在 rows[layer_name].object 中我正在创建 Kinetic.Layer 对象,如下面的代码:

layers.names[name]={
id:variable,
object:new Kinetic.Layer()
};
stage.add(layers.names[name].object);

是的,在此代码之前创建了阶段:

var stage=new Kinetic.Stage({
container:'canvas',
draggable:true,
height:document.documentElement.clientHeight,
width:document.documentElement.clientWidth
});

之后,我将点添加到数组中的对象:

var point=new Kinetic.Circle({
fill:'#000',
radius:3,
x:parent.children('input[name="x"]').val(),
y:parent.children('input[name="y"]').val()
});
var layer_name=$('input[name="layer"]').val();
layers.names[layer_name].object.add(point).draw();

此刻我正在尝试运行我的方法:

var layer_name=$('input[name="layer"]').val();
var point=layers.names[layer_name].object.children[$('input[name="element_index"]').val()];
point.test();

但是在控制台中我只有之前粘贴的错误。

最佳答案

看起来 Kinetic 并没有像您期望的那样处理继承。 Kinetic.Node 实际上并不在 Kinetic.Circle 的原型(prototype)链中。

创建 Kinetic.Circle 时,有一个实用函数,只需将 Kinetic.Node.prototype 中的所有函数复制到 Kinetic.Circle.prototype .

我不是 Kinetic 用户,但我认为这样的东西可能会起作用。

var myMethods = {
test: function() {
alert(1);
}
}

Kinetic.Util.addMethods(Kinetic.Circle, myMethods);
Kinetic.Util.addMethods(Kinetic.Shape, myMethods);
Kinetic.Util.addMethods(Kinetic.Node, myMethods);
Kinetic.Util.addMethods(Kinetic.Layer, myMethods);

不像简单地向 super 原型(prototype)添加一个方法那么干净,但我确信他们这样做有他们的理由。

关于javascript - 从一个对象到另一个 JavaScript (KineticJS) 的引用原型(prototype)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25652434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com