第三方模块构造函数属性在JPM中变为只读

时间:2015-04-02 05:36:47

标签: javascript firefox firefox-addon commonjs jpm

我正在尝试使用JPM实用程序为Firefox构建附加组件。如果我将以下内容放在index.js中,' bar'在没有任何问题的情况下被回显到浏览器控制台

'use strict';

function Foo() {
    this.$data = false;
}

Foo.prototype.change = function(data) {
    this.$data = data;
};

var Test = new Foo();

Test.change('bar');

console.log(Test.$data);

但是,如果我将以下内容放在名为test.js

的文件中
'use strict';

function Foo() {
    this.$data = false;
}

Foo.prototype.change = function(data) {
    this.$data = data;
};

module.exports = new Foo;

并从index.js

中获取它
var Foo = require('js/test');
Foo.change('bar');

我收到一个TypeError抱怨$ data是只读的。如何要求使用构造函数属性的第三方模块?

1 个答案:

答案 0 :(得分:0)

我猜这是出于安全原因。

无论如何,导出Foo构造函数并在index.js的范围内创建Foo对象