更新:
现在有第3阶段的提案-我期待在几个月后使这个答案过时。
同时,使用Typescript或babel的任何人都可以使用以下语法:
varName = value
在类声明/表达式主体内部,它将定义一个变量。希望在几个月/几周内,我将能够发布更新。
更新:Chrome 74现在附带此语法。
ES
Wiki中针对ES6中提案的注释(最大类别)注释:
没有(有意地)没有直接的声明方式来定义原型数据属性(方法以外的类)或实例属性
类属性和原型数据属性需要在声明之外创建。
在类定义中指定的属性被分配相同的属性,就像它们出现在对象文字中一样。
这意味着 您的要求已被考虑,并明确决定反对。
但为什么?好问题。TC39的好人希望类声明声明和定义类的功能。不是它的成员。ES6类声明为其用户定义其合同。
请记住,类定义定义了 原型 方法-在原型上定义变量通常不是您要做的事情。您当然可以使用:
constructor(){ this.foo = bar}
在像您建议的构造函数中。另请参见共识摘要。
ES7及更高版本ES7 +属性初始化器
等等,给属性赋值似乎是定义类的必要方法!没错,但是,由于它是惯用语言,因此我们以这种方式设计了它。我们完全希望用于属性初始化的更具声明性的语法会在将来的Javascript版本中出现。它可能看起来像这样:
// Future Version export class Counter extends React.Component { static propTypes = { initialCount: React.PropTypes.number }; static defaultProps = { initialCount: 0 }; state = { count: this.props.initialCount }; tick() { this.setState({ count: this.state.count + 1 }); } render() { return ( <div onClick={this.tick.bind(this)}> Clicks: { this.state.count } </div> ); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)