假设有一个带有 childType 属性的 JavaScript 对象,它是一个对象构造函数,并且您想编写一个通用的 addChild 方法。它需要创建 this.childType 的实例,并调用它的构造函数,将传入的任何参数传递给 addChild。
需要明确的是,重点是每个集合自己创建子对象,使用继承的泛型 addChild 方法及其已知的 childType,而不是验证传入的子对象的类型。
我不认为这很难做到,但我尝试了各种方法,但到目前为止都失败了。
更新:
我已经用迄今为止我所知道的最佳解决方案更新了演示 plunk ,并在代码中包含了一些关于该问题的评论。下面讨论的失败尝试不再存在。此解决方案要求所有潜在的 chold 对象都具有“新的不可知论构造函数”,因此仍然不理想。进一步的想法是最受欢迎的。
我知道这条线是错误的,有两个原因:
var child = new this.childItemType.call(args);
首先是我认为需要将某种“this”传递给调用函数,但我看不出它会在那里。
第二个大概是第一个的结果,浏览器报错:
Uncaught TypeError: function call() { [native code] } is not a constructor
我认为这应该是可行的,但是到目前为止,从 this.childType 和传递的参数创建该子对象的语法让我无法理解。有人可以在这里指出丢失的脑细胞吗?