在craftyjs中覆盖函数

时间:2014-01-03 14:19:36

标签: javascript function override craftyjs

我是JS新手并试图覆盖Craftyjs中的一个函数,这是我的代码:

    Crafty.c('TestA', {
        init: function() {                
            Crafty.addEvent(this, Crafty.stage.elem, "mousedown", this._e_clickListener);
        },
        _e_clickListener: function(e){
            this.foo();
        },
        foo: function() {
            console.log('call A foo');
        }
    });

    Crafty.c('TestB', {
        init: function() {
            this.requires('TestA');                
        },
        foo: function(){
            console.log('call B foo');
        }
    });

    Crafty.e('TestB');

单击画布时的结果是:

    call A foo

有没有把它变成'叫做B foo'呢? 感谢。

1 个答案:

答案 0 :(得分:3)

我对 CraftyJS 并不熟悉,文档可能会使用一些 TLC - 除非我错过了看起来好像在调用requires的内容只是简单地将 每个 合并到一个对象中 - last-in优先。没有继承,所以没有超类 - 只是一个扁平的对象。

也许有一种更好的方法,但我只能通过简单地在init函数 之后将其分配到“覆盖” 您已导入所需的组件。

Crafty.c('TestB', {
    init: function() {
        this.requires('TestA');
        this.foo = function(){
            console.log('call B foo');
        }
    }
});

jsFiddle