我如何导出功能变量

时间:2016-08-02 14:32:42

标签: javascript

我想导出变量 代码如下:

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变量一起导出吗?

[编辑]语法错误

2 个答案:

答案 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});