我的任务是创建一个名为MrFreeze
的对象/类,并将此对象标记为已冻结,以便不能对其进行任何其他更改。
我提出了以下有效的解决方案:
Object.freeze(MrFreeze);
但是当我查看http://www.codewars.com上提供的解决方案时,我遇到了这段代码:
(Object.freeze || object)(MrFreeze);
我无法理解这行代码。请解释为什么在使用OR对象操作符时这是有效的。
答案 0 :(得分:1)
似乎是对我的后退。
当Object.freeze确实存在时,它执行:
Object.freeze(MrFreeze);
当Object.freeze不存在时,它执行:
object(MrFreeze);
这也可以写成(更详细的澄清):
function freeze(MrFreeze, object) {
if (Object.freeze) {
Object.freeze(MrFreeze);
}
else {
object(MrFreeze);
}
}