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

时间:2015-11-09 20:52:57

标签: javascript inheritance

当您在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();

1 个答案:

答案 0 :(得分:2)

你可以,但你必须正确地呼叫new

Object.create()

Fuz.prototype = Object.create(Foo.prototype, { baz: { value: function () { console.log("override"); } } }); 的第二个参数应该是属性描述符对象。每个条目定义一个属性,这些条目的值应该是提供属性值的对象,以及getter,setter和access标志等其他内容。