gpt4 book ai didi

javascript - 如何使用 OLOO 模式在 javascript 中实现继承

转载 作者:行者123 更新时间:2023-11-30 07:21:22 25 4
gpt4 key购买 nike

我正在尝试实现对这段代码片段的继承

function parent(name) {
this.name = name;

}

function child(childname) {
parent.call(this, "cde");
this.childname = childname;
}

var p1 = new parent("abc");
child.prototype = Object.create(parent.prototype);
var p2 = new child("def");

console.log(p1.name);

console.log(p2.name);

使用 OLOO 模式 OLOO pattern

这是我的尝试

function person(name) {
this.name = name;
}


var p1 = new person("abc");

var p2;

p2 = Object.create(person);

console.log(p2.name);
p2.childname = "def";

在此处创建 p2 对象时,我不会向其发送名称。如何在创建 p2 对象时向其发送名称。

有人可以解释一下这是使用 OLOO 模式实现继承的正确方法吗

谢谢

最佳答案

此处发布的两个当前答案都是“正确的”,因为它们适本地应用了仅对象原型(prototype)链接(没有构造函数)。不过,我要澄清两点:

  1. 我绝不会推荐属性(或方法)的“阴影”,这意味着 p1p2 对象都具有 .name 属性。这是最常见的混淆来源之一,IME,与 JS 原型(prototype)。我总是建议在原型(prototype)链中的每个对象上使用不同的属性名称。

  2. OLOO 不仅仅是在不使用构造函数的情况下连接传统的“继承”层次结构,正如 OP 似乎正在做的那样。这是有效的,但是 OLOO 的一个非常简化的 View 。 OLOO 的真正目的是建立以不同于“类”的方式对软件进行建模的能力。 OLOO 的要点是,您可以设置两个对等对象,其中一个可以委托(delegate)给另一个(如果您愿意,反之亦然),这样它们就可以在方法的调用期间进行虚拟组合;又名:行为委托(delegate)。咨询Chapter 6 of my "YDKJS: this & Object Prototypes" book了解更多信息。

关于javascript - 如何使用 OLOO 模式在 javascript 中实现继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com