【问题标题】:Javascript object is a functionJavascript对象是一个函数
【发布时间】:2015-07-15 03:08:50
【问题描述】:

我想从另一个 JS 文件在一个新的 JS 文件中创建一个对象。
我在新文件中收到以下错误Object is not a function

var Bricklet = require('../Bricklet');
var b = new Bricklet("afea", "sdafdf", "affe");
console.log(b);

当我尝试在 JS 文件本身中创建一个对象时,它可以工作。
代码如下:

var Bricklet = (function () {
    function Bricklet(uid, deviceIdentifier, connectedUid) {
        this._uid = uid;
        this._deviceIdentifier = deviceIdentifier;
        this._connectedUid = connectedUid;
    }
    return Bricklet;
})();

var bricklet = new Bricklet("afea", "sdafdf", "affe");
console.log(bricklet);

为什么会出现这个错误?

【问题讨论】:

  • 您的导出是什么样的?我猜错误出现在第 2 行 (new Bricklet(...)),你能确认一下吗?
  • 您不能在其他 JavaScript 文件中导入 JavaScript 文件。如果这是一个 Node.js 问题,请将其标记为这样,因为这不适用于纯 JavaScript。
  • 你需要导出Bricklet like:module.exports = Bricklet
  • 这取决于您使用的环境(NodeJS、浏览器中的 AMD 等),但您还没有在任何地方导出 Bricklet,例如define("Bricklet", [], function() { /* ... */ return Bricklet });
  • 那是因为你的模块没有export构造函数。默认情况下,导出的对象不能用作构造函数。

标签: javascript node.js oop object


【解决方案1】:

你必须导出 Bricklet 函数:

var Bricklet = (function () {
    function Bricklet(uid, deviceIdentifier, connectedUid) {
        this._uid = uid;
        this._deviceIdentifier = deviceIdentifier;
        this._connectedUid = connectedUid;
    }
    return Bricklet;
})();

var bricklet = new Bricklet("afea", "sdafdf", "affe");
console.log(bricklet);

module.exports = Bricklet; // <<------- Add this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多