[英]How to call Parent Method from the Overriding Method in Child class
如何從子類中被重寫的父類訪問方法? 在下面的示例中,我想在foo.my_name()的重寫方法內調用bar.my_name()方法。
function bar() {
this.my_name = function() {
alert("I Am Bar");
}
}
function foo() {
this.my_name = function() {
alert("I Am Foo");
//access parent.my_name()
}
}
foo.prototype = Object.create(bar.prototype);
foo.prototype.constructor = foo;
var test = new foo();
test.my_name();
一種可能的解決方案是將方法移至基類原型。
function bar() {
}
bar.prototype.my_name = function() {
alert("I am bar");
}
function foo() {
}
foo.prototype = Object.create(bar.prototype);
foo.prototype.my_name = function() {
alert("I Am Foo");
bar.prototype.my_name.call(this);
}
foo.prototype.constructor = foo;
var test = new foo();
test.my_name();
您可以這樣做:
(new bar()).my_name.call(this);
我認為您對原型的工作方式有些困惑,因為它們並沒有真正幫助您。
這可能會稍微好一點:
var bar = {
my_name: function () {
console.log('bar name');
}
};
var foo = Object.create(bar);
foo.my_name = function () {
console.log('foo name');
bar.my_name.call(this);
};
或者,如果您想使用構造函數,則如下所示:
function Bar () {}
Bar.prototype.my_name = function () {
console.log('bar name');
};
var foo = Object.create(Bar.prototype);
foo.my_name = function () {
console.log('foo name');
bar.my_name.call(this);
};
但是我不確定自己要做什么或為什么做,所以有了更多背景信息,可以為您提供更好的建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.