在ES6中添加了JavaScript的类语法 ,显然使得扩展为null是合法的: class foo extends null {} 一些谷歌search显示, 在ES的讨论中提出这样的声明是错误的; 然而,其他评论者认为他们在这个基础上是合法的 有人可能想要创build一个具有{__proto__: null}原型的类 争论的这一面最终占了上风。 我无法理解这个假设的用例。 首先,虽然这样一个类的声明是合法的,但是实例化一个这样声明的类却不是。 尝试在Node.js或Chrome上从上面实例化类foo给了我非常愚蠢的错误 TypeError: function is not a function 而在Firefox做同样的事情给了我 TypeError: function () { } is not a constructor 在MDN当前的特性示例中显示,在类上定义构造函数并没有帮助。 如果我尝试实例化这个类: class bar extends null { constructor(){} } 那么Chrome / Node告诉我: ReferenceError: this is not defined Firefox告诉我: ReferenceError: |this| used uninitialized in […]
class SomeClass extends Component{ someEventHandler(event){ } render(){ return <input onChange={——here——}> } } 我看到——here——部分的不同版本。 // 1 return <input onChange={this.someEventHandler.bind(this)}> // 2 return <input onChange={(event) => { this.someEventHandler(event) }> // 3 return <input onChange={this.someEventHandler}> 这些版本有什么不同? 还是只是一个偏好问题? 谢谢大家的回答和意见。 所有这些都是有帮助的,我强烈build议阅读这个链接第一,如果你对我感到困惑。 http://blog.andrewray.me/react-es6-autobinding-and-createclass/
什么是调用静态方法的标准方法? 我可以考虑使用constructor或使用类本身的名称,我不喜欢后者,因为它不觉得有必要。 前者是推荐的方式,还是有其他的东西? 这是一个(人为的)例子: class SomeObject { constructor(n){ this.n = n; } static print(n){ console.log(n); } printN(){ this.constructor.print(this.n); } }