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

标签 javascript oop inheritance

在定义子类时,我得到了构造函数参数的 TypeErorr:undefined ,正如我所见,它充当占位符。到底发生了什么以及如何解决?

function Class(object) {
    this.name = object.name;
}

var myClass = new Class({
    name: "ClassName"
})

console.log(myClass.name); 

function SubClass(object) {
    this.name = object.name;
}

SubClass.prototype = new Class();
SubClass.prototype.constructor = SubClass;

var mySubClass = new SubClass({
    name: "SubClassName"
})

//类型错误:对象未定义

最佳答案

通常,您的基类在其原型(prototype)上会有方法,因此使用 SubClass.prototype = Object.create(BaseClass.prototype) 更合适,并且还在基类中调用您的父构造函数class' 构造函数,以便可以在父构造函数中找到 object.name (这是您收到的错误,因为没有任何内容传递到 SubClass.prototype = new Class().

function Class(object) {
    this.name = object.name;
}

Class.prototype.sayName = function () {
    return this.name;
}

var myClass = new Class({
    name: "ClassName"
});

console.log(myClass.name); 

function SubClass(object) {
    // call parent constructor with context of the new SubClass instance
    Class.call(this, object);
}

SubClass.prototype = Object.create(Class.prototype);
SubClass.prototype.constructor = SubClass;

var mySubClass = new SubClass({
    name: "SubClassName"
});

console.log(mySubClass.sayName());
// > "SubClassName"

这里有一些有用的引用

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

相关文章:

c# - 用 C# 设计类

C++ 方法继承但返回类型错误(自动转换?typeid(*this)?)

ios - 子类化 MKAnnotation 导致 Set 集合不起作用

c++ - "Undefined class"作为 is_base_of 的参数

javascript - 一个 JavaScript 对象使用构造函数找到它的原型(prototype)?

javascript - <ul><li> 元素的 jQuery 点击函数

java - 方法重载的基本概念是什么

oop - 命令模式-为什么封装在对象中?

javascript - 在 D3 转换中使用 CSS 值

javascript - 在 Django View 中调用 'request.POST' 时 Ajax POST 不发送数据