【发布时间】:2016-12-07 21:55:19
【问题描述】:
我有一个对象,其实例变量包含一个对象列表。现在我想在我的元素列表中添加一个自定义的 toString() 方法(Element 也有一个自定义的 toString() 方法)。我尝试了以下方法,它在浏览器中工作:
class Cell {
constructor(public id: string, public elements: Element[]) {
this.elements.toString = (): string => this.elements.join(' | ');
}
}
但是,在使用 jasmine 运行测试时,我在初始化 Cell 时收到错误 TypeError: Attempted to assign to readonly property.。
为列表获取自定义 toString() 方法的最佳方法是什么(而不是 [elem1, elem2, elem3])?有没有办法告诉茉莉这次重新分配没问题?
【问题讨论】:
-
您是否尝试将自定义的
toString添加到Array?最好创建一个类,比如ElementsList,由Elements的数组构造而成,并且具有定制的toString方法 -
重写原型被认为是不好的做法,您应该将自定义 toString 函数重命名为其他名称(例如 customToString、convertToString 等)
-
@BrunoGrieder:是的,这是一个很好的解决方法。
-
@fwind 太好了。如果你想关闭那个,让我把这个作为答案发布
-
@borislemke:就我而言,显示对象的组件应该与不同的对象一起使用。我认为设置 toString 方法会很好,因为它在每个对象中都给出了。
标签: javascript typescript jasmine