我如何覆盖孩子的父方法? 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?
答案 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();