扩展Kinetc.Shape和所有派生的形状

时间:2013-06-08 19:13:34

标签: javascript object kineticjs extend prototypal-inheritance

我希望扩展对象Kinetic.Shape(其他每个形状都扩展)以及更多属性和方法。

我试过的是

Kinetic.Util.addMethods(Kinetic.Shape, {
  foo: 'bar'
});

所以说如果我创建了一个新的Kinetic.Circle实例,它应该包含这个定义的属性(并且每个其他形状都应该这样做)。

new Kinetic.Circle(options).foo; // returns undefined
// should return 'bar'

我该如何实现这种行为?

1 个答案:

答案 0 :(得分:0)

等待合并此拉取请求https://github.com/ericdrowell/KineticJS/pull/497。 现在你可以这样做 - 用这个替换Kinetic.Util.extend函数:

extend: function(child, parent) {
    function ctor() {
        this.constructor = child;
    }
    ctor.prototype = parent.prototype;
    var old_proto = child.prototype;
    child.prototype = new ctor();
    for (var key in old_proto) {
        if (old_proto.hasOwnProperty(key))
            child.prototype[key] = old_proto[key];
    }
    child.__super__ = parent.prototype;
}