我想导出变量 代码如下:
let url = '';
module.exports = Object.freeze({
url: url
});
我有可能编辑可以通过点访问的属性。
ObjectWhichHasAboveCode.url = "http://help.me"
我能以任何功能方式实现吗?覆盖赋值运算符?
我试过了;
1) url: () => url
2) url: {
value: url,
writable: true
}
有可能以某种方式实现它吗?
第二个问题:
我可以将let.freeze方法和let变量一起导出吗?
[编辑]语法错误
答案 0 :(得分:0)
如果我理解你正在寻找的是模块模式。您希望在对象上冻结方法实现,但您不希望对象的状态完全不可变。
以下是可以做的事情:
module.exports = (function () {
var url;
return Object.freeze({
get url() { return url; },
setUrl: function (value) { url = value; }
});
})();
必须使用theObject.setUrl('some url')
设置网址,但所有其他成员都是不可变的。仍然可以使用点表示法(url
)访问theObject.url
。
编辑:
实际上,您要找的是Object.seal
。
module.exports = (function () {
var url;
return Object.seal({
get url() { return url; },
set url(value) { url = value; }
});
})();
答案 1 :(得分:0)
密封对象而不是冻结它:
Object.seal()
方法密封对象,阻止新属性 从添加到它并将所有现有属性标记为 不可配置。当前属性的值仍可以更改为 只要它们是可写的。
module.exports = Object.seal({url});