javascript - 意外 token = 用于 Node 8.4 中的类属性

标签 javascript node.js es6-class class-fields

在 Node (v8.4)中运行以下代码

class TodoStore {
    todos = [];

    get completedTodosCount() {
        return this.todos.filter(
            todo => todo.completed === true
        ).length;
    }

    report() {
        if (this.todos.length === 0)
            return "<none>";
        return `Next todo: "${this.todos[0].task}". ` +
            `Progress: ${this.completedTodosCount}/${this.todos.length}`;
    }

    addTodo(task) {
        this.todos.push({
            task: task,
            completed: false,
            assignee: null
        });
    }
}

const todoStore = new TodoStore();

todoStore.addTodo("read MobX tutorial");
console.log(todoStore.report());

todoStore.addTodo("try MobX");
console.log(todoStore.report());

todoStore.todos[0].completed = true;
console.log(todoStore.report());

todoStore.todos[1].task = "try MobX in own project";
console.log(todoStore.report());

todoStore.todos[0].task = "grok MobX tutorial";
console.log(todoStore.report());

给我以下错误:

        todos = [];
              ^

SyntaxError: Unexpected token =
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:537:28)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Function.Module.runMain (module.js:609:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:598:3

最佳答案

更新
对实例类字段的支持从 node >= 12 开始。


根据 this table,任何版本的 Node 都不支持文字类属性。 .您仍然需要在类构造函数中设置任何实例属性:

class TodoStore {

    constructor() {
        this.todos = [];
    }
    // ...
}

如果你想定义一个 static 属性,你可以在声明类之后直接将它分配给 TodoStore 引用:

TodoStore.todos = [];

关于javascript - 意外 token = 用于 Node 8.4 中的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47517149/

相关文章:

javascript - 我可以用 es6 的 extend 关键字替换 util.inherits 吗?

javascript - JQuery 提交表单 - 发现错误

javascript - 仅检测视口(viewport) jQuery 中的元素

node.js - pm2 更改日志文件位置

javascript - 仅当行中存在 13SL 时才匹配

javascript - 在严格模式下使用 future 保留字

javascript - document.getElementById(...).style.display 为空白

javascript - 密码未显示

Node.js 简单的 http 请求不起作用

从 Array 和另一个类扩展的 Javascript 类