Javascript:防止从父函数执行子类函数

时间:2016-08-31 09:00:34

标签: javascript javascript-objects

父类:

clicked:function(){
    if(!this.enabled) return;
},

Child Override Parent Function:

clicked:function(){
    this.parent();
    console.log('Clicked');
}

我正在尝试阻止使用上面的代码禁用子函数但它不起作用,父函数只是停止自身而子进程执行。是否可以让父级停止执行任何覆盖代码?感谢。

更新 假设我有50个继承自同一类的子类。有没有更简单的方法,所以我们不需要放:

if(!this.enabled) return;
this.parent();

在每个子类中点击功能?

3 个答案:

答案 0 :(得分:1)

clicked:function(){
    return this.enabled;
} 

clicked:function(){
    if (this.parent()) console.log('Clicked');
}

答案 1 :(得分:0)

在父对象中,您必须具有检查父项是否已启用的函数。父母点击的功能应该负责做一些动作。

enabled: function() {
    return this.enabled;
}
clicked:function() {
    // this must be responsible for invoking some action
    // do some action
} 

在子对象中,您必须检查父级是否已启用。 (这是你想要实现的猜测)

clicked:function() {
    if (this.enabled()) console.log('Clicked');
}

答案 2 :(得分:0)

Javascript继承有时候有点困难。这是一个小例子。

// parent class constructor
MMN.Parent = function(text) {
    this.member = text;
}

MMN.Parent.prototype = {
    setMember : function(text) {
        this.member = text;
    }
}

// child class constructor
MMN.Child = function() {
    MMN.Parent.call(this, 'This text is set from the child constructor');
}

// inheritance
MMN.Child.prototype = Object.create(MMN.Parent.prototype);

// override and call of parent method
MMN.Child.prototype.setMember = function(text) {
    MMN.Parent.prototype.setMember(text);
    console.log('this logs from the child method');
}

此示例显示如何在子类中调用父方法。