当您在javascript中“继承”时,您既可以继承父级的原型函数,也可以在同一个Object.create()
内,定义新的原型方法。为什么你也不能在这一步中覆盖?
示例:未定义Fuz.baz()
function Foo() {}
Foo.prototype = {
bar: function () {
this.baz();
},
baz: function () {
console.log("original")
}
}
function Fuz() {
Foo.call(this);
}
Fuz.prototype = Object.create(Foo.prototype, {
baz: function () {
console.log("override");
}
});
var c = new Foo();
c.baz();
var a = new Fuz();
a.baz();
答案 0 :(得分:2)
你可以,但你必须正确地呼叫new
:
Object.create()
Fuz.prototype = Object.create(Foo.prototype, {
baz: {
value: function () {
console.log("override");
}
}
});
的第二个参数应该是属性描述符对象。每个条目定义一个属性,这些条目的值应该是提供属性值的对象,以及getter,setter和access标志等其他内容。