在定义子类时,我得到了构造函数参数的 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/