javascript oop重写继承的方法

斯马伯

// The parent class
    var Parent = function (jqueryElement) {
        this.jqueryElement = jqueryElement;
    };
    
    Parent.prototype.attachClick = function () {
        var that = this;
         
        this.jqueryElement.click(function (e) {
            e.preventDefault();
    
            that.doClick($(this));
        });
    }
    
    Parent.prototype.doClick = function ($element) {
        console.info('click event from parent');
    }
    
    // First child class
    var A = function(jqueryElement) {
        var that = this;
    
        Parent.call(this, jqueryElement);
    
        // this is supposed to override the Parent's
        this.doClick = function ($element) {
            console.info('click event from A');
        };
    };
    
    A.prototype = Object.create(Parent.prototype);
    
    
    
    var test = new A($('.selector'));
    test.attachClick();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="selector">Click me</button>

在这个阶段,我应该看到消息"click event from A",但是奇怪的是,我没有看到任何消息,好像该doClick方法从未执行过。如何doClick在子类中覆盖继承的方法()?

Matheus Dal'Pizzol

您忘记了执行点击。您的代码正在运行。=)我只建议将您的.doClick()方法放在A.prototype中,这样它将被所有A实例共享。

// The parent class
    var Parent = function (jqueryElement) {
        this.jqueryElement = jqueryElement;
    };
    
    Parent.prototype.attachClick = function () {
        var that = this;
         
        this.jqueryElement.click(function (e) {
            e.preventDefault();
    
            that.doClick($(this));
        });
    }
    
    Parent.prototype.doClick = function ($element) {
        console.info('click event from parent');
    }
    
    // First child class
    var A = function(jqueryElement) {
        var that = this;
    
        Parent.call(this, jqueryElement);
    
    };
    
    A.prototype = Object.create(Parent.prototype);

    // this is supposed to override the Parent's
    A.prototype.doClick = function ($element) {
       console.info('click event from A');
    };
    
    var test = new A($('.selector'));
    test.attachClick();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button class="selector">Click me</button>

https://jsfiddle.net/ekw6vk43/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

javascript OOP继承多个DOM元素的方法

来自分类Dev

Javascript OOP继承

来自分类Dev

Javascript OOP类对象继承

来自分类Dev

oop javascript deepcopy mixins多重继承

来自分类Dev

继承中的重写方法

来自分类Dev

节点Javascript类方法重写

来自分类Dev

多级继承中的重写方法

来自分类Dev

方法重写期间的奇怪继承

来自分类Dev

重写超类继承的方法

来自分类Dev

Javascript OOP-对象的声明方法

来自分类Dev

重写WebResource javascript方法-WebForm_InitCallback()

来自分类Dev

用JavaScript中的方法进行类继承

来自分类Dev

JavaScript中的继承:调用父级的方法

来自分类Dev

Javascript从类继承属性和方法?

来自分类Dev

Javascript继承静态和实例方法/属性

来自分类Dev

Javascript:使对象继承数组方法

来自分类Dev

Javascript原型继承不调用预期的方法

来自分类Dev

使用继承重写@RequestMapping方法

来自分类Dev

接口继承和抽象方法重写

来自分类Dev

继承的类重写虚拟方法依赖项

来自分类Dev

代码协定和继承(重写方法的前提)

来自分类Dev

如何扩展继承的方法而不是重写它?

来自分类Dev

python类多重继承中的方法重写

来自分类Dev

Python中的继承,init方法被重写

来自分类Dev

OOP:继承继承

来自分类Dev

Javascript 中的继承 - 来自子方法的父方法调用

来自分类Dev

JavaScript OOP。尝试学习JavaScript中的OOP

来自分类Dev

Google Data API上的OOP Javascript回调方法

来自分类Dev

OOP JavaScript:回调函数内部的调用方法