在中间Mozilla 文档页面 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model它切换(没有足够清晰的解释)示例
WorkerBee.prototype = Object.create(Employee.prototype);
to
WorkerBee.prototype = new Employee;
第二种形式new Employee
将使用仅存在于 WorkBee 实例中的属性来初始化 WorkBee 的原型。
为什么在如此多的 JavaScript 继承示例中使用第二种形式?
给继承的属性和自己的属性赋予不同的状态不是不受欢迎的吗?
WorkBee 中的 Employee 属性名称的状态与属性项目不同,因为名称是在 WorkBee.prototype.name 中定义的,而项目是在 WorkBee 实例上定义的。
一般来说,为什么有人想要使用非抽象类 X 的构造函数来初始化 JavaScript 中派生类 Y 的原型?
在我看来,两个构造函数都应该只用于初始化 X 和 Y 的实例,如果 Y 派生自 X,那么构造函数 X 应该初始化 Y 的实例,而不是 Y 的原型。
但是如果 X 是抽象的,这意味着我们不希望有 X 的实例,只有这样我们才可以使用 X 构造函数作为派生类原型初始化的地方。
为什么在如此多的 JavaScript 继承示例中使用第二种形式?
因为我们没有摆脱它,它还在继续蔓延。也可以看看here https://stackoverflow.com/a/12593269/1048572对于一些历史。
给继承的财产和自己的财产赋予不同的地位不是不受欢迎的吗?
是的,一点没错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)