Gee*_*eky 1 javascript inheritance
我正在尝试实现此代码段的继承
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);Run Code Online (Sandbox Code Playgroud)
使用OLOO模式OLOO模式
这是我的尝试
function person(name) {
this.name = name;
}
var p1 = new person("abc");
var p2;
p2 = Object.create(person);
console.log(p2.name);
p2.childname = "def";Run Code Online (Sandbox Code Playgroud)
虽然在这里创建p2对象我不发送名称.如何在创建p2对象时向其发送名称.
有人请说明这是使用OLOO模式实现继承的正确方法
谢谢
这里发布的当前答案都是"正确的",因为它们适当地应用仅对象原型链接(没有构造函数).不过我会澄清两点:
我永远不会推荐属性(或方法)的"阴影",这意味着让对象p1和p2对象都具有.name属性.这是JS原型中最常见的混淆源之一,即IME.我总是建议在原型链中的每个对象上使用不同的属性名称.
OLOO不仅仅是在不使用构造函数的情况下连接传统的"继承"层次结构,就像OP似乎正在做的那样.这是有效的,但是OLOO的简化视图非常简化.实际上,OLOO旨在以不同于"类"的方式构建模拟软件的能力.OLOO的目的是让你设置两个对等对象,其中一个可以委托给另一个对象(反之亦然,如果你愿意的话),这样他们就可以在方法的调用时间内进行虚拟编写; 又名:行为代表团.有关详细信息,请参阅我的"YDKJS:this&Object Prototypes"一书的第6章.