gpt4 book ai didi

javascript - 为什么继承对象不能在继承调用中覆盖原型(prototype)函数?

转载 作者:行者123 更新时间:2023-11-30 16:29:03 25 4
gpt4 key购买 nike

当您在 javascript 中“继承”时,您既可以继承父类的原型(prototype)函数,也可以在同一个 Object.create() 中定义新的原型(prototype)方法。为什么您也不能在此步骤中覆盖?

示例: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();

最佳答案

可以,但必须正确调用 Object.create():

Fuz.prototype = Object.create(Foo.prototype, {
baz: {
value: function () {
console.log("override");
}
}
});

Object.create() 的第二个参数应该是一个属性描述符对象。每个条目都定义一个属性,这些条目的值应该是提供属性值和其他东西(如 getter、setter 和访问标志)的对象。

关于javascript - 为什么继承对象不能在继承调用中覆盖原型(prototype)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33618055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com