【问题标题】:Export javascript object to be used as new instance导出要用作新实例的 javascript 对象
【发布时间】:2021-03-30 01:40:59
【问题描述】:

所以我有我的menu.js 文件,里面有一个Menu 对象,如下所示:

let Menu = {
  elt: null,
  settings: {
    title: '',
  }
}
export { Menu };

现在,我想使用菜单对象在另一个文件中构建另一个菜单,如下所示:

const test = new Menu('', {
  // Empty
});

由于某种原因,它不允许我使用导出,我也尝试过export default Menu;,但没有成功,它不断返回以下错误:

有人知道实例化对象字面量的正确方法吗?

【问题讨论】:

  • 1) Menu 不是函数或类,因此您不能使用new Menu()。 2)这是在浏览器或节点中运行的吗?你在使用像 Webpack 这样的打包工具吗?
  • 感谢@Phil 提供的详细信息,这是在浏览器中运行的-假设我想构建一个可以接受对象参数的函数,会不会像let Menu = (function() {
  • 我没有使用 webpack。
  • 那你需要使用ES6 modules(即<script type="module">)和兼容的浏览器
  • 听起来你想要一个class 然后

标签: javascript jquery object


【解决方案1】:

在 ES6(又名 ES2015)中,JavaScript 引入了类。这些工作就像其他编程语言中的类(如果你知道的话)一样,具有构造函数、方法、getter 和 setter(都是可选的)。您可能需要考虑切换到以下代码:
menu.js:

class Menu {
    constructor() {
        this.elt = null;
        this.settings = {
            title: ""
        }
    }

    // Other methods
}

export { Menu }

main.js:

import { Menu } from "menu";

const test = new Menu();

但是,如果要放参数,可以将Menu构造函数更改为:

constructor(elt = null, settings = {
    title: ""
}) {
    this.elt = elt;
    this.settings = settings;
}

然后,在main.js

import { Menu } from "menu";

const test = new Menu("", {
    // Empty
});

【讨论】:

  • 这正是我想要的!谢谢@Cutewarriorlover,我想知道构造函数如何使用对象参数,但这很有帮助。
  • 你知道关于导入部分的这个错误Uncaught SyntaxError: Cannot use import statement outside a module吗?
  • 据此,我假设您使用的是 Node.js。我不太清楚为什么会出现这个错误,我只知道 Node.js 不允许这样的 import 语句。在这种情况下,您将使用const { Menu } = require("./menu")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多