- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现对这段代码片段的继承
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)链接(没有构造函数)。不过,我要澄清两点:
我绝不会推荐属性(或方法)的“阴影”,这意味着 p1
和 p2
对象都具有 .name
属性。这是最常见的混淆来源之一,IME,与 JS 原型(prototype)。我总是建议在原型(prototype)链中的每个对象上使用不同的属性名称。
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/
我仍在学习,但最近将我想从事的领域更改为网络开发。所以编程对我来说并不是什么新鲜事,但我从来没有真正看过 javascript。 我正在尝试快速学习,但我对 javascript 中使用的不同继承模式
我不确定最好的方法是让 OLOO 继承链中的每个对象都具有独立的对象属性。 检查此 fiddle 或考虑以下代码: http://jsfiddle.net/HB7LU/19413/ Parent =
我正在尝试实现对这段代码片段的继承 function parent(name) { this.name = name; } function child(childname) { parent
我正在尝试将对象链接到其他对象以编写Node模块。这是我到目前为止(受this answer启发): 'use strict' // Composable prototype object var p
Kyle Simpson 的“OLOO(对象链接到其他对象)模式”与原型(prototype)设计模式有何不同?除了通过专门指示“链接”(原型(prototype)的行为)的东西来创造它并澄清这里没有
我最近刚刚了解到 Kyle Simpson 创造的“OLOO”委托(delegate)模型(而不是继承),他使用类似于下面的代码片段创建对象并委托(delegate)属性和函数: var Foo =
我是一名优秀的程序员,十分优秀!