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