作者注:每个人都有自己的编程风格,绝不应被迫服从他人的风格。但是,我认为,最好的风格应建立语言的特点上,要考虑语言的优势。如果您正在JS中使用经典的继承方式,我的意思并不是让你立即采用我建议的风格,我认为每个人都应该有用不同写法的权力。
有一件事让我很沉重,就是许多JavaScript开发人员一直试图将JavaScript变成经典的继承模式。
TypeScript和CoffeeScript就是这个问题的症状。
TypeScript其实还可以。至少这是一个超集,所有现有的JS可以复制并粘贴到里面。它具有静态类型检查,它可以很好的运行在大型代码库中。
CoffeeScript就不一样,它是完全不同的。如果没有学过该语言,它会很难读懂,即使是将其编译成JS。
这两种语言似乎都有一个共同的目标:把JavaScript变成经典的继承模式。这似乎是开发者之间的一个很受欢迎的东西,这让我很不爽。
跟我一块说:
JavaScript不是一个经典的语言
它是基于原型的,所以请使用原型。你应该像Object.create这样定义原型对象和工厂方法:
var MyClass = {prototype: {// prototypal members and methods},create: function(options){// do stuff with optionsreturn Object.create(MyClass.prototype, options);}};
而不是在ES6中和其他衍生语言中定义的那些可怕的class语法。
这一点,在我看来比class的继承方式更加清晰,整洁,也更符合语言的架构。它有助于发挥JS的优势。
我很清楚经典继承方式的吸引力。甚至道格拉斯Crockford, JavaScript Good Parts (原声PPT) 作者 都实现了一个经典的伪继承 , 开明的JavaScript的创造者布Brendan Eich似乎喜欢很ES6中的class。对于许多程序员来说,这是在他们使用JavaScript之前很熟悉和舒适的编程方式。然而,JavaScript并不是一个经典的语言,语法糖和ES6的新class关键字只是在自欺欺人。
我们应该教别人原型继承是如何工作的,它的好处是什么和使用的最佳方式。我们不应该让这种语言假装可以像C++或Java一样工作。
我觉得应该让人们听到像 Eric Elliott 和 Douglas Crockford 分享的这些观点。
如果你想了解 class 这样的关键字为什么那么可怕,为什么原型继承比经典的好,可以看一看 Eric Elliott 的文章。
恩, 独到的见解。
“JavaScript不是一个经典的语言”就是本文的唯一论据? 没有任何分析,不知所云。
自相矛盾 "每个人都有自己的编程风格,绝不应被迫服从他人的风格" 明显与标题 "请停止将JavaScript类型化"
有人喜欢类型化,有人不喜欢类型化,各用各的,不用建议了.
es6是大势所趋
es6 的class 只是语法糖,es6还是基于原型的继承。不过作者的担心是有必要的。如果改变语法只是第一步,第二部是吧js变成基于类继承,那么js就不再是js了。
推荐一个javascript的课程,http://www.hubwiz.com/course/54ee8d2de564e519b8f8dad3/
很不喜欢 es6
改成类继承没啥不好吧,大规模的编程这样看起来更加自然一些
必须改为强类型的,不然永远是一坨
啊