【问题标题】:Third party modules constructor function properties become read-only in JPM第三方模块构造函数属性在 JPM 中变为只读
【发布时间】:2015-04-03 04:37:32
【问题描述】:

我正在尝试使用 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');

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

【问题讨论】:

    标签: javascript firefox firefox-addon commonjs jpm


    【解决方案1】:

    我猜这是出于安全原因。

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

    【讨论】:

    • 这在这个简化的例子中可以工作,但在我的实际用例中,我需要从 index.js 需要的多个文件中使用这种模式的模块
    猜你喜欢
    • 2019-06-15
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    相关资源
    最近更新 更多