技多不压身:学习JavaScript经验分享

紫云飞 发表于:13年02月20日 00:30 [转载] 51CTO

  • 分享:
[导读]很遗憾,我没有学过Scheme和Self,和大部分人一样,我也费了不少劲才算搞明白JavaScript中的闭包和原型.不过我接触过awk,Perl和Python,.这三门语言也对JavaScript产生了一定的影响.

回顾我的编程生涯,有三种编程语言给我学习JavaScript打上了良好的基础(之所以这么说,是因为JavaScript的确有一些比较难学的地方):

Scheme: 在我进入大学信息专业的第一学期,我通过经典的“计算机程序的构造和解释”一书学习了Scheme语言.当初,JavaScript从Scheme中学到了闭包.最近,受Racket(一种Scheme方言)的启发,ECMAScript 6中又增加了一种称之为private symbol的对象类型来实现“私有性(privacy)” .

Self: 随后,我还粗略的学习过基于原型的面向对象语言.期间看过一篇很有见地的论文:“不使用类来组织程序”. 这篇论文通过描述一种称之为Self的语言(另一种在JavaScript发明时期影响了它的语言)讲到了下面这些知识点:"基于类的语言中存在有两种关系:谁是谁的实例(对象和类之间的关系)和谁是谁的子类(类和类之间的关系).基于原型的语言中只存在有一种关系:谁是谁的原型(对象和对象之间的关系).虽说如此,但在这两种不同的面向对象语言中,该如何组织自己的程序,还是很类似的".

Java: 通过学习Java,有三点可以影响到你对JavaScript的学习.首先是语法,因为在发明JavaScript的时候,JavaScript之父收到的命令就是“它的语法必须看起来像Java.第二点是,它能帮助你学会面向对象的编程,虽然有时候会觉的Java的语法有点死板.“Effective Java”(亚马逊购买链接)一书是一本很好的Java入门书籍.第三点,你还能知道一个好的IDE(Eclipse等)应该是什么样的,在这一方面,JavaScript仍然需要努力向前赶.

除了我所说的这三种语言,肯定还有一些其他的语言,能让你把一些在这些语言中学到的原理稍加修改(或者完全一样)就能应用到JavaScript的学习中.

译者注:很遗憾,我没有学过Scheme和Self,和大部分人一样,我也费了不少劲才算搞明白JavaScript中的闭包和原型.不过我接触过awk,Perl和Python,.这三门语言也对JavaScript产生了一定的影响.

awk的函数声明写法是这样的:

  1. function add(a,b){ 
  2.     return a+b 

你看见了,和JavaScript中函数声明的写法一模一样,因为function这个关键字就是来自awk的,证据是"Coders at Work"一书中Brendan Eich接受采访时说过的话:

One more positive influence, and this is kind of embarrassing, was awk. I mean, I was an old Unix hacker and Perl was out, but I was still using awk for various chores. And I could’ve called these first-class functions anything, but I called them “function” mainly because of awk. An eight-letter keyword—it’s kind of heavy, but there it is.

再来说Perl,JavaScript中的正则表达式语法是从Perl来的.各种数组方法 push,pop,shift,unshift,splice,join,reverse,sort,都是来自于Perl中的同名函数.我在 SpiderMonkey源码中搜索过"Perl",结果如下:

这些注释几乎都是Brendan Eich亲手写的.如果你熟悉Perl,在开始学习JavaScript的时候就不会对这些来源于Perl的方法和特性感到陌生.

那Python呢?在发明JavaScript的时候,Python才刚刚起步 (1.2),目前的JavaScript貌似没有从Python中学到些什么,不过未来的JavaScript会,ECMAScript 6中的迭代器和生成器,yield表达式,数组(生成器)推导式,默认参数,剩余参数,解构,模块等等,都或多或少的学习了Python中的类似语法.如 果你没接触过Python,学习这些东西会花费不少时间,相反,这些东西几乎没有什么学习成本.

有些人说:"学习编程语言要精通一门,学的多会导致全面平庸".嗯,前半句是对的,但后半句是错的.

[责任编辑:韩蕊]
Ruby
SAP分享了多年来对企业运营变革的洞察,以及SAP Business Suite powered by HANA如何推动企业在对业务影响最小的情况下向实时企业转型,从而帮助企业实现更睿智的业务创新、更快速的业务流程和更简化的业务交互。发布会现场,SAP公司宣布,中国最大的瓶装水生产商——农夫山泉成为基于 SAP HANA 的SAP Business Suite在中国的首家客户。
官方微信
weixin
精彩专题更多
存储风云榜”是由DOIT传媒主办的年度大型活动。回顾2014年,存储作为IT系统架构中最基础的元素,已经成为了推动信息产业发展的核心动力,存储产业的发展迈向成熟,数据经济的概念顺势而为的提出。
华为OceanStor V3系列存储系统是面向企业级应用的新一代统一存储产品。在功能、性能、效率、可靠性和易用性上都达到业界领先水平,很好的满足了大型数据库OLTP/OLAP、文件共享、云计算等各种应用下的数据存储需求。
联想携ThinkServer+System+七大行业解决方案惊艳第十六届高交会
 

公司简介 | 媒体优势 | 广告服务 | 客户寄语 | DOIT历程 | 诚聘英才 | 联系我们 | 会员注册 | 订阅中心

Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技术有限公司 版权所有.