Javascript用子方法覆盖父方法

时间:2017-03-21 09:10:06

标签: javascript

我如何覆盖孩子的父方法? javascript是否有类似parent :: method();

的内容
var Parent = function(){
       this.myMethod(){
          //Some code here
       };
    }

    var Child = function(){
       Parent.call(this);
       this.myMethod(){
          //Some code here
          //and then run parent method
       };
    }

已更新有比这更好的方式(不是ES6)?:

var Parent = function ()
{
    this.myMethod()
    {
        this.extedMyMethod()
        //Some code here
    };

    this.extedMyMethod()

}

var Child = function ()
{
    Parent.call(this);
    this.extedMyMethod()
    {
        //Some code which expand parent method
    };
}

P.S。如果我喜欢@Suren Srapyan suguest webpack将转换为适当的非ES6?

3 个答案:

答案 0 :(得分:5)

使用ES6类语法继承,您可以通过super调用来完成。

class Parent{
   method(){
    console.log('Parent !!!');
   }
}

class Child extends Parent{
  
  constructor(){
     super();
  }

   method(){
    console.log('Child !!!');
    super.method();
   }
}

var child = new Child();
child.method();

<强>已更新

您还需要将polyfill用于不同的浏览器

答案 1 :(得分:0)

这是一种本土方法:

Person = function (name) {
	this.name = name;
  this.sayBang = function() {
    console.log("Bang!");
  }
	console.log("i'm a Person");
}

Programmer = function (name) {
	Person.call(this,name);
  this.sayBang = function() {
    console.log("I'm hungry!");
  }
	console.log("i'm a Programmer");
}

var marco = new Programmer("Marco");

console.log(marco);

marco.sayBang();

答案 2 :(得分:0)

您可以创建新实例或返回函数以使其可访问

var Parent = function(){
       return () => {
          alert("parent");
       };
  };

  var Child = function(){
      this.myMethod = function(){
        alert("child")
         Parent()();
      }
  };
var foo = new Child();
foo.myMethod();

jsfiddle example