gpt4 book ai didi

javascript - 高级 javascript 继承失败 - 父 <- 父 <- 子

转载 作者:行者123 更新时间:2023-12-03 08:51:56 29 4
gpt4 key购买 nike

我已经阅读有关绑定(bind)、调用、申请的文章近一周了,对我来说仍然很复杂。我想我写的这个 jsfiddle 需要它们。然而,我没能做到,因为我仍然很困惑。

我尽力写了一些我上周从遇到这个问题的开发人员那里听到的内容。他想要显示他创建的新类(classC)中的 classA 的属性,但它没有显示数据。

所以就这样了。

有一个父对象(classA),包含完整的属性和方法。它的子类(如 classB 的子类)继承了 classA 的属性,因此继承的数据加上它自己的数据可以在 classB 的模态上呈现。

现在,需要添加一个新的模式或部分来显示 A 类的一些属性和 B 类的属性。所以他们创建了一个名为classC的新类,它继承了classB的所有信息。我记得他们说过,classC 继承了 classB 的所有属性和方法,但 classA 中不存在它需要的属性。

请帮我拉 fiddle 。它将帮助我成为一名更好的 Javascript 开发人员。哦,我还记得他们提到了“call”和“super”之类的东西,我还不熟悉。

function classA()  {
this.firstname = 'Donna';
this.lastname = 'Hill';
function getFullname () {
return firstname + ' ' + lastname;
}
}

function classB() {
var childofA = new classA();
var age = 10;
var sex = "female";

var bObject = {
showFullname : function() {
console.log(this.childofA.getFullname);
}
}
return bObject;
}

function classC() {
var childofB = new classB();
var cObject = {
showFullname : function() {
console.log(this.childofB.showFullname);
}
}
return cObject;
}

var c = new classC();
console.log(c.showFullname());

http://jsfiddle.net/01hz8933/2/

最佳答案

fiddle 已更新。 http://jsfiddle.net/01hz8933/4/

// setup base class
function ClassA() {
this.firstname = 'Donna';
this.lastname = 'Hill';
}
ClassA.prototype.showFullname = function() {
return this.firstname + ' ' + this.lastname;
}


// first child class
function ClassB() {
this.age = 10;
this.sex = "female";
ClassA.call(this); // call parent constructor
}
ClassB.prototype = Object.create(ClassA.prototype); // inherit
ClassB.prototype.constructor = ClassB; // use our constructor function


// grand child
function ClassC() {
ClassB.call(this); // call parent constructor
}
ClassC.prototype = Object.create(ClassB.prototype); // inherit
ClassC.prototype.constructor = ClassC; // use our constructor function


var c = new ClassC();
console.log(c.showFullname());

里面有很多东西需要解开,但你的原作中有很多东西让我感到惊讶。希望更新后的 fiddle 能为您提供一些答案。

关于javascript - 高级 javascript 继承失败 - 父 <- 父 <- 子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643167/

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