OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

请停止将JavaScript类型化(建议不要使用class实现类继承)


分享到
分类 心得体会   关键字 分享   发布 ourjs  1437966714805
注意 转载须保留原文链接,译文链接,作者译者等信息。  
作者注:每个人都有自己的编程风格,绝不应被迫服从他人的风格。但是,我认为,最好的风格应建立语言的特点上,要考虑语言的优势。如果您正在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 options
    return 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,我们为什么应该抵制ES6的一些特性 








原文地址: 点此
社区评论 ( Beta版 )
  • #0 林甩土 1437977075473

    恩, 独到的见解。

  • #1 梅决仆 1437977975146

    “JavaScript不是一个经典的语言”就是本文的唯一论据? 没有任何分析,不知所云。

  • #2 黎价旬 1437990086159

    自相矛盾 "每个人都有自己的编程风格,绝不应被迫服从他人的风格" 明显与标题 "请停止将JavaScript类型化"

    有人喜欢类型化,有人不喜欢类型化,各用各的,不用建议了.

  • #3 jie 1437996935763

    es6是大势所趋

  • #4 蔡划出 1438098003702

    es6 的class 只是语法糖,es6还是基于原型的继承。不过作者的担心是有必要的。如果改变语法只是第一步,第二部是吧js变成基于类继承,那么js就不再是js了。

  • #5 xiaozhi 1438160987047
  • #6 章个丹 1438742011951

    很不喜欢 es6

  • #7 周她习 1464230487292

    改成类继承没啥不好吧,大规模的编程这样看起来更加自然一些

  • #8 石出帅 1464244535728

    必须改为强类型的,不然永远是一坨

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 我是怎么从顾虑到热爱ReactJS的(与AngularJS经典MVC数据绑定的对比)
  2. JavaScript中的哈希表(Hash Maps的最佳实践)
  3. WowJS:在滚动页面时添加动画效果的简单实现
  4. Node.js中的通用基础设计模式
  5. LightGL轻量级的WebGL 3D渲染库
  6. 闪客时代开始被HTML5慢慢终结:Facebook首席安全官号召设定正式消灭Flash的期限
  7. [PPT]JavaScript初级教程
  8. 在Debian/Ubuntu上面安装升级nginx到最新版
  9. 纽约时报使用Html5 WebRTC记录访问者IP地址
  10. AirJD-简单好用的免费建站工具

 相关阅读 - 心得体会
  1. 请停止将JavaScript类型化(建议不要使用class实现类继承)
  2. 几款开源的图形化Redis客户端管理软件
  3. 我为什么不再用Compass写CSS(缺点分析)
  4. CSS Sprite小图片自动合并工具(NodeJS,Python,Java,Ruby)
  5. 即将推出的CSS4 Level 4 Selectors(第4级选择器)
  6. 主流JavaScript MVC框架性能比较测试:Angular vs Backbone vs Ember
  7. [译]Node.js 框架比较: Express vs. Koa vs. Hapi
  8. 从PhantomJS迁移到node-webkit:自动化测试框架简单比较
  9. 保卫AngularJS
  10. Angular.JS出了什么问题?

 关键字 - 分享
  1. 第三方评论平台多说即将关闭
  2. GLG工具包Visualization and HMI Toolkit更新至v3.6,支持Java Script
  3. 地图服务器控件GIS Map Server v3.6发布,新增航空影像数据集功能
  4. 搜狐社区宣布关闭,又有多少人的回忆被埋葬在PC时代里?
  5. AutoVue使用教程:如何在64位Linux上安装AutoVue
  6. AutoVue 21.0.1新版本特性:支持在没有Applets的浏览器中运行
  7. MFC界面库BCGControlBar v25.2新版亮点:支持Visual Studio 2017 RC
  8. 软件逆向工程的前世今生
  9. 对于企业而言,渗透测试为什么是必要的?
  10. LEADTOOLS v19更新发布文档和医疗功能,增加Visual Studio 2017兼容性!

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号