我一直在读关于绑定,打电话,申请近一周的文章,这对我来说仍然很复杂。我认为我需要他们为我写的这个jsfiddle。但是,由于我仍然感到困惑,我无法做到。
我尽力写下我上周从遇到此问题的开发人员那里听到的内容。他希望从他制作的新类(classC)中显示classA的属性,但它没有显示数据。
所以就这样了。
有一个父对象(classA)包含完整的属性和方法。子类(类似于classB的子类)继承了classA中的属性,因此可以在classB'模态上呈现继承数据及其自己的数据。
现在,需要添加一个新的模态或部分来显示classA中的几个属性和classB中的属性。所以他们创建了一个名为classC的新类,它继承了classB中的所有信息。我记得他们说过,classC继承了classB中的所有属性和方法,但是它们在classA中所需的属性并不存在。
请帮助我摆弄小提琴。它将帮助我成为一个更好的Javascript开发人员。哦,我还记得他们提到过像“打电话”这样的事情。和超级'我还不熟悉。
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());
答案 0 :(得分:1)
小提琴更新。 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());
在那里打开包装很多,但是你的原件中有很多东西让我感到惊讶。希望更新的小提琴为您提供一些答案。