提问者:小点点

javascript中如何防止在使用子类时调用父类的构造函数


如果我在javascript中有两个类,一个继承另一个。 当基类的构造函数运行时,父类的构造函数也被调用。

null

    class Parent{
        constructor(){
            alert("Parent constructor Called");
        }
    }

    var parent = new Parent();
    
    class Child extends Parent{
        constructor(){
            super();
            alert("Child constructor Called");
        }
    }
   
    var child = new Child();

null

结果:-

var parent = new Parent();

输出->;

>

  • 发出警报->; “已调用父构造函数”。

    var child=new child();

    输出->;

    1. 发出警报->; 父构造函数调用“
    2. 发出警报->; 名为“
    3. ”的子构造函数

    如何防止在生成子类的对象时调用父类的构造函数。 我面临的一个问题是,父构造函数调用父类的events方法,而父类调用的方法内部带有一些ajax请求。 我也想在基类中使用相同的ajax调用方法,我在子类的events方法中调用该方法,而events方法调用包含ajax请求的方法,但是由于父构造函数在需要的地方调用这些方法,因此ajax方法被调用两次,再次获取相同的数据。 而且,这两种类中的许多变量名是相同的。


  • 共1个答案

    匿名用户

    根据设计,每个继承的类总是首先运行父构造函数(通过使用super关键字)。

    您需要的是更改您的实现,以便可以覆盖行为。

    class Parent{
        alert() {
            alert("Parent constructor Called");
        }
    
        constructor() {
            this.alert();        
        }
    }
    
    var parent = new Parent();
    
    class Child extends Parent{
        alert() {
            alert("Child constructor Called");
        }    
    }
    
    var child = new Child();