【发布时间】:2020-02-16 14:26:28
【问题描述】:
我想在创建 JavaScript 对象后立即对其进行封装:
'use strict';
class Test {
}
const t = Object.seal(new Test());
t.p = true; // error!
有没有办法自动完成,如下所示?
Test.sealInstances = true // I wish sealInstances was real!
const t = new Test();
t.p = true; // error
我知道我可以这样做:
function createTest() {
return Object.seal(new Test())
}
并在任何地方使用createTest,但我更喜欢new Test() 语法。
【问题讨论】:
-
其实工厂函数看起来更干净。在构造函数中使用
seal,您将无法再扩展您的类。 -
@georg,在我的例子中,
Test是从模块中导出的。你认为出口工厂是个好主意吗?我的犹豫是,我会失去像const { Test } = require('testModule')这样方便的语法。 -
为什么,
const {createTest} = require(...)有什么问题? -
@georg,确实没有什么问题 :) 也许我会坚持下去,谢谢!
标签: javascript ecmascript-6 es6-class