Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';继承对象在继承调用中重写原型函数?_Javascript_Inheritance - Fatal编程技术网

Javascript 为什么可以';继承对象在继承调用中重写原型函数?

Javascript 为什么可以';继承对象在继承调用中重写原型函数?,javascript,inheritance,Javascript,Inheritance,当您在javascript中“继承”时,您既可以继承父对象的原型函数,也可以在相同的对象中继承。create(),定义新的原型方法。为什么在此步骤中也不能覆盖 示例:未定义Fuz.baz() function Foo() {} Foo.prototype = { bar: function () { this.baz(); }, baz: function () { console.log("original") } } fun

当您在javascript中“继承”时,您既可以继承父对象的原型函数,也可以在相同的
对象中继承。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();

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

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

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

第二个参数不是propertyDescriptor。。。阅读createObject。你希望它做什么?Foo作为函数调用,不执行任何操作,返回未定义的结果。