我想知道他们在尝试设置this.props.a = 1
或类似内容时实际使用什么机制来引发错误。
我问,因为在记录道具时,我没有看到像[Getter/Setter]
这样的东西,我认为这就是他们正在做的事情。
谢谢!
答案 0 :(得分:0)
好问题。
我认为props
是一种对象值,被标记为const
。
但是即使标记为Object
,我们也可以更改任何const
值中的子项;
// const also works on objects
const MY_OBJECT = {'key': 'value'};
// Attempting to overwrite the object throws an error - Uncaught TypeError: Assignment to constant variable.
MY_OBJECT = {'OTHER_KEY': 'value'};
// However, object keys are not protected,
// so the following statement is executed without problem
MY_OBJECT.key = 'otherValue'; // Use Object.freeze() to make object immutable
如您所见,上面的代码可以使用Object.freeze()函数使对象不可变。
我认为props
的值设置为Object.freeze()
函数。