我尝试使用新的ES7语法将属性传递给类,而不使用构造函数。
我知道我们可以用一个构造函数传入这个函数:
class MyClass {
constructor(pacman) {
this.pacman = pacman;
}
}
...
const myInstance = new MyClass({food:'........'});
但是,我们如何在ES7中使用“无构造函数”语法来实现这一点呢?
失败代码:
class MyClass {
static pacman; // undefined
pacman = this.pacman; // undefined
this.pacman = pacman; // Syntax error: unexpected token .
pacman = this.pacman.bind(this); // Cannot read property 'bind' of undefined
}
...
const myInstance = new MyClass({food:'........'});
2条答案
按热度按时间unftdfkk1#
但是,我们如何在ES7中使用“无构造函数”语法来实现这一点呢?
ES2016中没有无构造函数语法。如果您参考仍处于实验阶段的class fields proposal:一个类字段只适用于初始化为每个示例的相同值的东西,它不能依赖于传递给构造函数的任何东西。这就是你需要一个
constructor
的地方。只有在那里你才能声明参数并使用它们来引用构造函数的参数。xqnpmsa82#
我相信ES7只是在ES6已有的功能基础上增加了一些额外的功能。要给予参数,您仍然需要使用
constructors
。使用ES7的额外好处是,现在您不必担心将在**数组函数(方法)**中使用的this
。