我阅读了大量有关原型的材料并了解继承的一般情况。然而,这是困扰我的一件事,我无法弄清楚。
如何使用以下代码片段实现原型继承:
// Generic prototype for all letters.
let letter = {
getNumber() {
return this.number;
}
};
let a = {number: 1, __proto__: letter};
let b = {number: 2, __proto__: letter};
// ...
let z = {number: 26, __proto__: letter};
console.log(
a.getNumber(), // 1
b.getNumber(), // 2
z.getNumber(), // 26
);
下面是这张图
然而,当我们开始使用实际的继承结构(使用 new 关键字)时,它开始看起来像这样:
我明白它是如何运作的。我不明白的是,为什么我们突然需要所有子实例继承自的 Letter.prototype 对象,而不是像上面的第一个图那样拥有它。对我来说,第一个示例似乎没有任何问题。
我能想到的一个潜在原因是实际方法允许在类中实现静态方法/属性。在上面的示例中,如果您添加静态方法,那么它将是添加到 Letter 对象的函数,而不是添加到 Letter.prototype 对象的函数。子对象 (a,b,z) 将无权访问该函数。在第一个示例中,这种功能必须以不同的方式实现,但我仍然认为这不是创建新 Prototype 对象的充分理由。我认为这个静态方法功能可以在没有它的情况下实现。
我错过了什么吗?
红颜莎娜
炎炎设计
神不在的星期二
相关分类