【发布时间】:2020-04-08 09:24:02
【问题描述】:
我看到人们使用Object.freeze 和其他一些技术来创建一个单例类。
假设我有这门课。
class Test {
constructor(){
this.data = [];
}
setData(){
this.data = [1,2,3];
}
}
const test = new Test();
Object.freeze(test);
export default test;
现在,我将它导入另一个文件。
import Test from './test'
Test.setData();
这现在会导致 Cannot assign to read only property to data 的错误,这意味着我什至不能对我的属性使用 setter/getter。
问题 1) 如果我们甚至不能更改类中的属性,为什么还要使用 Object.freeze?
问题 2)我会怎么做才能不更改类外的属性,但要更改类内的属性?
【问题讨论】:
-
这不是单例模式。
Object.freeze的目标是使对象不可变。因此错误 -
我个人会做
import test from './test',只是为了保持一致并在以后避免任何混乱..
标签: javascript oop design-patterns