尝试调用pranet方法时出现此错误:Uncaught TypeError: Cannot read property 'call' of undefined

http://jsfiddle.net/5o7we3bd/

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();

最佳答案

您没有在“父母”原型上放置“父母功能”。您的“父代”构造函数向实例添加了“ parentFunction”属性,但是在原型上该函数将不可见。

在构造函数中,this指的是通过new调用而创建的新实例。将方法添加到实例是一件好事,但这与将方法添加到构造函数原型完全不同。

如果要访问由“父代”构造函数添加的“ parentFunction”,则可以保存引用:

function Child() {
   Parent.call(this);
   var oldParentFunction = this.parentFunction;
   this.parentFunction = function() {
      oldParentFunction.call(this);
      console.log('parentFunction from child');
   }
}

10-08 16:31