【发布时间】:2019-01-21 16:35:03
【问题描述】:
我想扩展 String 原型并在我的 Angular 5 应用程序的一个或多个组件中使用它。主要原因是我有一系列对象,它们的属性有时会被填充,有时不会。示例:customer.address 有时是 string(地址的 _id),有时它被填充,它是一个 Address 对象,具有 _id 属性。
我想要的基本上不用担心customer.address是否填充,只需访问_id即可。我知道根据其他一些回复here,它被认为是 Javascript 反模式,但我想做这样的事情:
String.prototype._id = function () {
return String.prototype.valueOf()
}
不管这个想法有多糟糕——已经在其他问题中得到了回答——这是否是一种实现方式,我应该在哪里声明?有没有更好的方法来解决这个问题?
谢谢。
PS。我知道我也可以在我的Address 类中覆盖toString 方法并获得类似的结果,调用customer.address.toString() 来获得_id,但我觉得它不清晰,我想探索其他选项首先。
【问题讨论】:
-
我仍然认为你根本不应该这样做 :-) 但如果你坚持,你可能想要一个 getter 而不是添加到
String.prototype的函数。 -
感谢您的评论!我很可能不会这样做,但我仍然很好奇什么是最好的方法,什么是缺点。最后,也许我会创建某种实用函数。
标签: javascript angular