使用 Backbone.Model 作为 es6 class

Using Backbone.Model as es6 class

我正在尝试将 Backbone.Model 用作 ES6 class。这是我的代码:

import Backbone from 'backbone';
import $ from 'jquery';
Backbone.$ = $;

class DataManager extends Backbone.Model {
    url() {
        return 'api.json';
    }
    parse(data) {
        console.log(data);
        return data;
    }
    constructor() {
        this.fetch()
    }
}

export default DataManager;

api.json 是一个简单的 json 文件,包含:{test:1}

fetch 调用成功获取数据(解析方法 console.log 显示了它)但我收到以下错误:

Uncaught TypeError: Cannot read property 'test' of undefined

如果我切换到 es5 语法,代码就可以工作:Backbone.Model.extend({...});

谁能解释一下?

您需要从构造函数内部调用 super() 才能调用父 class 的构造函数。

不要执行类似从构造函数中获取的行为。它被放在一个方法中,供您在构造函数中以外的任何地方使用。首先创建一个对象,然后告诉它做什么。创建它时不要让它启动。