使用object.create设置对象的原型

时间:2015-01-15 16:22:54

标签: javascript prototype prototype-chain

i was answering to a question where i encountered this problem 在下面的代码中,如何使用object.create()方法将子原型设置为父。我可以使用

child.prototype=new Parent();

但是我想用object.create来做。使用child.prototype = Object.create(Parent)没有将原型设置为Parent

enter image description here

function Parent() {
   this.parentFunction = function(){
      console.log('parentFunction');
   }
}
Parent.prototype.constructor = Parent;

function Child() {

   this.parentFunction = function() {

      this.constructor.prototype.parentFunction.call(this);
      console.log('parentFunction from child');
   }
}
Child.prototype = Object.create(Parent);
Child.prototype.constructor = Child;

var child = new Child();
console.dir(child);
child.parentFunction();

1 个答案:

答案 0 :(得分:0)

两个问题:

  1. 您定义的第一个parentFunction位于Parent的构造函数中,不是原型。因此Parent.prototype.parentFunction未定义。而是parentFunction的{​​{1}}的单独副本。

  2. Parent构造函数中,Child指的是this.constructor.prototype的原型,而不是Child的原型。如果您需要Parent原型,可通过Parent访问。

  3. 我最低限度地修改了您的代码,以便在子代上调用this.prototype.prototype来调用父代的parentFunction

    parentFunction