【发布时间】:2017-11-01 11:00:44
【问题描述】:
以下代码只会对name 属性抛出错误。
可以通过在 Object.create 参数中将 name 属性指定为可写来修复它,但 我试图理解为什么会发生这种情况(也许有更优雅的方法来修复它)。
var BaseClass = function (data) {
Object.assign(this, data);
}
var ExtendedClass = function () {
BaseClass.apply(this, arguments);
}
ExtendedClass.prototype = Object.create(BaseClass);
console.log(new ExtendedClass({ type: 'foo' }));
new ExtendedClass({ name: 'foo' });
【问题讨论】:
-
因为所有函数都有一个返回函数名称的原生
name属性。但是,与 JavaScript 一样,继承的属性可以通过创建新属性来覆盖。 -
@ScottMarcus,感谢您的回答,很明显,我没有想到这一点很遗憾。有没有更强大的方法来绕过类继承中的错误?
标签: javascript oop