当我将类实例推入数组时出现奇怪的问题,似乎只有对象属性被推入,因为我无法再从数组中调用该对象中定义的方法。因此,我有以下代码(我将其缩短了一点,以使其尽可能易于阅读)。
class BaseSet implements ISet {
public testAttr: string;
constructor(baseStr) {
this['testAttr'] = baseStr;
}
}
class ExtendedSet extends BaseSet implements IExtendedSet {
public testAttrExtended: string;
constructor(baseStr) {
super(baseStr);
this['testAttrExtended'] = baseStr;
}
public test(): string {
return 'tetetetest';
}
}
class BaseClass {
}
class ExtendedClass extends BaseClass {
public sets?: ExtendedSet[];
public set?: ExtendedSet;
constructor() {
super();
this['set'] = new ExtendedSet('foo');
this['sets'] = new Array<ExtendedSet>();
this['sets'].push(new ExtendedSet('foo'));
}
}
let classInstance = new ExtendedClass();
console.log(classInstance.set.test());
console.log(classInstance.sets[0].test());
console.log(classInstance.sets[0].testAttrExtended);
基本上会发生什么事,就是将对象推入数组,此后我将无法再引用该对象的方法。
这里
classInstance.set.test()
返回tetetetest,但
classInstance.sets [0] .test()
引发错误
classInstance.sets [0] .test不是函数
然后调用testAttrExtended属性返回foo就好了。
是否存在将对象的多个实例保存到数组中的不同方法?