gpt4 book ai didi

javascript - 子类继承父类(super class)属性

转载 作者:行者123 更新时间:2023-11-28 06:58:25 24 4
gpt4 key购买 nike

为了帮助你帮助我,我将用一个例子来说明这个问题:

var SuperClass = function() {
this.propertieOfSuperClass = 'A';

this.init();
};

SuperClass.prototype.init = function() {
console.log(this.propertieOfSuperClass); // ouput 'A';
};


// Some code here to do the magic for SubClass1
// Some code here to do the magic for SubClass2

子类1:

var SubClass1 = function() {
this.methodOfSubClass1();
};

SubClass1.prototype.methodOfSubClass1 = function() {
console.log(this.propertieOfSuperClass); // output 'A';
};

子类2:

var SubClass2 = function() {
this.methodOfSubClass2();
};

SubClass2.prototype.methodOfSubClass = function() {
console.log(this.propertieOfSuperClass); // output 'A';
};

我希望能够拥有这个我设置属性的父类(super class)和其他两个子类,我可以访问父类(super class)的属性,但不会丢失范围。

我试图在我的 SuperClass init 方法内部使用:

SubClass1.call(this);
SubClass2.call(this);

这将使 SuperClass 的属性可访问,但子类的属性将失去其范围,因此我无法调用 methodOfSubClass1methodOfSubClass2,因为它们不存在于SuperClass中。

这个问题可以解决吗?

提前非常感谢。

最佳答案

JavaScript 中有 3 种可能的继承。

1)伪古典:

/**
* Create a new constructor function, whose prototype is the parent object's prototype.
* Set the child's prototype to the newly created constructor function.
**/

var extendObj = function (childObj, parentObj) {
var tmpObj = function () {}
tmpObj.prototype = parentObj.prototype;
childObj.prototype = new tmpObj();
childObj.prototype.constructor = childObj;
};

( https://jsfiddle.net/nikdtu/4wzuwhqw/ )

2) 功能性 ( https://jsfiddle.net/nikdtu/eh7u4pxd/ )

3) 原型(prototype) (Object.create) ( https://jsfiddle.net/nikdtu/dnjkx8w1/ )

关于javascript - 子类继承父类(super class)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32365692/

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