javascript - StandardJs + ES6 扩展类 - 无用的构造函数?

标签 javascript class ecmascript-6 extends

<分区>

这是我的模型类:

'use strict'

import MongoDb from 'database/mongodb'

export default class Model {
  constructor (options) {
    this.data = this.sanitize(options)
  }

  objectId (_id) {
    // https://stackoverflow.com/questions/17545311/correct-way-to-search-for-mongodb-entries-by-id-in-node
    const mongodb = new MongoDb()
    const objectId = mongodb.objectId
    return objectId(_id)
  }

  async db () {
    const mongodb = new MongoDb()
    const connection = await mongodb.connect()
    return connection
  }

  sanitize (options) {
    return options
  }

  async insert (options) {
    //
  }

  async find (options) {
    //
  }

  async remove (options) {
    //
  }
}

我有一个用户类从它扩展:

'use strict'

import lodash from 'lodash'
import Model from 'model'
import schemas from './schemas'

export default class User extends Model {
  constructor (options) {
    super(options)
  }

  sanitize (options) {
    let data = options || {}
    let schema = schemas.user
    let keys = lodash.keys(schema)
    let defaults = lodash.defaults(data, schema)
    let picked = lodash.pick(defaults, keys)    
    return picked
  }
  ...
  ...
}

但根据standardjs :

standard: Use JavaScript Standard Style (https://standardjs.com)
  /var/www/html/.../user/models/user.js:8:3: Useless constructor.

为什么我的构造函数无用的

据我所知,我必须在我的扩展类中使用super(),即使我还没有完全理解它。我用错了吗?

有什么想法吗?

编辑:

如果我省略扩展类中的构造函数,我将得到这个错误:

Syntax Error: missing super() call in constructor

最佳答案

  constructor (...args) {
    super(...args);
  }
constructor被省略时,

将成为扩展类中的默认构造函数。这就是它被标记为“无用”的原因。

super只有在有constructor的情况下才应该在extended class中指定,而constructor只有在有一些逻辑之外的时候才应该指定使用完全相同的参数调用父构造函数。

关于javascript - StandardJs + ES6 扩展类 - 无用的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45924326/

相关文章:

javascript - 实现ajax滚动分页后触发功能不再起作用

c++已停止工作静态 map 功能

JavaScript:如何在调用 new 后对类进行字符串化

css - 谷歌地图 iframe 类覆盖上面的文字并且不尊重维度

javascript - 为什么我不能使用 ES6 函数语法作为构造函数?

javascript - 如何在 map 上使用 Object.observe?

javascript - 为什么继承Array在ES5中很难实现?

javascript - Angular4 - 如何使用 Karma 和 Jasmine 对指令进行单元测试

javascript - Web 音频 "Click"声音,即使在使用 exponentialRampToValueAtTime 时也是如此

javascript - 在水平之前砌筑垂直填充