【问题标题】:Breaking up an ES6 class into multiple files [duplicate]将 ES6 类分解为多个文件 [重复]
【发布时间】:2015-01-16 13:07:00
【问题描述】:

使用 JavaScript“类”(我知道,这不是一个真正的类),可以通过将方法放在单独的文件中来分解大定义,如下所示:

var Foo = function () {
  console.log('initializing foo');
};

Foo.prototype.render = require('./render');

但是对于 ES6 类,语法似乎排除了这种方法 - 似乎方法总是必须在类块中编写为函数文字。

我在 6to5 REPL 中 tried this

class Foo {
  constructor() {
    console.log('initializing foo');
  }

  require('./render');
}

...但它出错了。

例如,CoffeeScript 的类语法允许我这样做:

class Foo
  constructor: ->
    console.log 'initializing foo'

  render: require './render'

ES6 类真的没有办法做到这一点吗?

【问题讨论】:

    标签: javascript coffeescript ecmascript-6


    【解决方案1】:

    类只是语法糖。所以你可以做

    class Foo {
      constructor() {
        console.log('initializing foo');
      }
    }
    
    Foo.prototype.render = require('./render');
    

    或者你可以创建一个getter:

    class Foo {
      constructor() {
        console.log('initializing foo');
      }
    
      get render() {
        return require('./render');
      }
    }
    

    【讨论】:

    • 在这些方法中访问this 怎么样?
    • @NathanH:怎么样?除了箭头函数,this 的值取决于函数一个函数的调用方式,而不是它的创建方式。
    • 谢谢,我想就是这样,我可能使用的是箭头语法。
    【解决方案2】:

    这个怎么样?

    class Foo {
      constructor() {
        console.log('initializing foo');
      }
    
      render() { 
        require('./render'); 
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 2016-05-05
      • 1970-01-01
      • 2019-06-11
      相关资源
      最近更新 更多