如何解决类构造函数应仅接受某件事作为参数,否则会引发错误
我对JavaScript还是很陌生,遇到了一个我无法逾越的令人沮丧的问题。
我正在TwilioQuest上进行练习,我的构造函数应仅接受“红色”,“黄色”或“蓝色”作为参数,否则会引发错误。这对我来说似乎正确,并且可以在控制台中进行测试,但是当我在游戏中“ HACK”时,TwilioQuest说我的构造函数应仅接受“红色”,“黄色”或“蓝色”作为参数。好吧...
解决方法
不,不是。您的构造函数很乐意接受任何参数,或者实际上不接受任何参数,因为A)您使用try
/ catch
来抑制错误(不抛出任何错误),并且B)您从未使用过throw
。
删除try
/ catch
,并在最后的throw
中添加else
。关键是抛出一个错误,突然终止构造函数,并阻止任何东西获取对其初始化对象的引用。
我还建议仅使用||
和if
/ else
。重复this.color = color;
3次没有任何意义。
首先将对将所有有效颜色存储在数组中很有用。为了能够更改有效颜色列表而无需更新构造函数中的逻辑。
第二,我们可以使用Array.prototype.includes
方法来检查所传递的参数(下面的代码中的{color
)是否是数组的元素。
如果需要限制类Ducktypium
的用户,则每次输入参数throw
不在有效颜色列表中时,我们都应该color
出现错误。
否则一切都很好,我们可以将参数color
分配给prop color
const VALID_COLORS = ['red','yellow','blue']
class Ducktypium {
constructor(color) {
if (!VALID_COLORS.includes(color)) {
throw new TypeError('invalid color')
}
this.color = color
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。