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
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();
答案 0 :(得分:0)
两个问题:
您定义的第一个parentFunction
位于Parent
的构造函数中,不是原型。因此Parent.prototype.parentFunction
未定义。而是parentFunction
的{{1}}的单独副本。
在Parent
构造函数中,Child
指的是this.constructor.prototype
的原型,而不是Child
的原型。如果您需要Parent
原型,可通过Parent
访问。
我最低限度地修改了您的代码,以便在子代上调用this.prototype.prototype
来调用父代的parentFunction
:
parentFunction