如何从子调用父方法
How to call parent method from child
我在尝试调用 pranet 方法时遇到此错误:Uncaught TypeError: Cannot read property 'call' of undefined
function Parent() {
this.parentFunction = function(){
console.log('parentFunction');
}
}
Parent.prototype.constructor = Parent;
function Child() {
Parent.call(this);
this.parentFunction = function() {
Parent.prototype.parentFunction.call(this);
console.log('parentFunction from child');
}
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
var child = new Child();
child.parentFunction();
您没有在 "Parent" 原型上放置 "parentFunction"。您的 "Parent" 构造函数将 "parentFunction" 属性 添加到 实例 ,但它不会作为函数在原型上可见。
在构造函数中,this
指的是通过 new
调用而创建的新实例。向实例添加方法是一件好事,但它与向构造函数原型添加方法完全不同。
如果你想访问"Parent"构造函数添加的那个"parentFunction",你可以保存一个引用:
function Child() {
Parent.call(this);
var oldParentFunction = this.parentFunction;
this.parentFunction = function() {
oldParentFunction.call(this);
console.log('parentFunction from child');
}
}
我在尝试调用 pranet 方法时遇到此错误:Uncaught TypeError: Cannot read property 'call' of undefined
function Parent() {
this.parentFunction = function(){
console.log('parentFunction');
}
}
Parent.prototype.constructor = Parent;
function Child() {
Parent.call(this);
this.parentFunction = function() {
Parent.prototype.parentFunction.call(this);
console.log('parentFunction from child');
}
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
var child = new Child();
child.parentFunction();
您没有在 "Parent" 原型上放置 "parentFunction"。您的 "Parent" 构造函数将 "parentFunction" 属性 添加到 实例 ,但它不会作为函数在原型上可见。
在构造函数中,this
指的是通过 new
调用而创建的新实例。向实例添加方法是一件好事,但它与向构造函数原型添加方法完全不同。
如果你想访问"Parent"构造函数添加的那个"parentFunction",你可以保存一个引用:
function Child() {
Parent.call(this);
var oldParentFunction = this.parentFunction;
this.parentFunction = function() {
oldParentFunction.call(this);
console.log('parentFunction from child');
}
}