如何从子类中重写的父类访问方法? 在下面的示例中,我想在覆盖内部调用bar.my_name()方法 foo.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();
答案 0 :(得分:1)
可能的解决方案之一是将方法移动到基类原型。
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();
答案 1 :(得分:1)
你可以这样做:
(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);
};
但我不确定你要做什么或为什么,所以有了更多的背景,你会更容易给你更好的建议。