有一天,有一个人跟我说,不是说只有经验丰富了才可以写,只要你有心得、有体会,就可以写下来总结一下,这样你就会有新的认识和体会。是的,我很认同。
一直反复看了一本书,叫《JavaScript 高级程序设计》,雅虎界面呈现架构师 Nicholas C.Zakas(尼古拉斯.泽卡斯)编著,写得很详细和全面,很多人推荐,这本书也是我开启前端开发工作的利刃。刚开始实习的时候,我的前一周,啥事没做,就安安静静、踏踏实实地坐在那里阅读这本书,导师还给划了重点,从了解js的起源和语言特点,到基本的语法再到事件、函数、js面向对象、DOM、BOM 、正则以及HTML5、AJAX等,当然啦。这些是前端开发工作必备的基础中的基础,不过,要想理解这些,学透这些,可不是一天两天的功夫,需要在理解基本的原理的基础上不断实践,敲代码,做项目,反复遇到疑问然后反复解答,最后慢慢吃透。所以,重要的书籍要看三遍!
其实,到我工作两年后我第N次看到“基本概念”这章节时,我才明白js里面为什么分5种简单数据类型(null、undefined、boolen、number、string)和1种复杂数据类型(object),同时还有很多看似理所当然但又不知其所以然的问题,这里我抛出几个问题,有可能我现在理解的也不深入,边写边探索吧。
------------------------------------------------------------------------------------------------------
1、Object和其他对象是什么关系?
2、怎么理解javascript里面的简单数据类型、复杂数据类型以及引用类型?
3、ECMAScript和JavaScript有什么关系?
------------------------------------------------------------------------------------------------------
1、Object和其他对象是什么关系?
先看下面几句话:
1)对象就是一组数据和功能的集合。
2)Object是所有对象的基础。
3)对象是某个引用类型的实例(值1)。
Array、Boolean、Date、Function、Number等对象,其实都是从Object来的,它们的祖先都是Object。它们表现不同的语言特性,比如Array有被自动管理的length属性,Boolean只有true或false取值,Date表示时间结构,Function可以被运行,都是它们的原始类型(valueOf)赋予它们的能力。
2、怎么理解javascript里面的简单数据类型、复杂数据类型以及引用类型?
简单类型:null undefined boolen number string
复杂类型:object
引用类型:Object Array Date RegExp Function
特殊的引用类型(基本包装类型):Boolen Number String
内置对象:Golbal Math
3、ECMAScript和JavaScript有什么关系?
JavaScript是一种专为与网页交互而设计的脚本语言,它由ECMAScript、DOM、BOM三个部分组成。Web浏览器只是ECMAScript实现可能的宿主环境之一,而JavaScript在浏览器这个宿主环境中实现了ECMACcript,所以,简单来说,JavaScript是ECMAScript的一种实现。其他宿主环境包括Node、Adobe等。
好吧,我只是比较简单的描述了下我认为的可能的答案,后面还有详细的开专篇来讨论这些具体的问题,这次主要要分享的还是重要的书籍看三遍!在静坐一周第一遍看这本书之后,感觉是比较混沌的,对,就是这种感觉,模糊而又具体,感觉对JavaScript有了更加全面的认识,但是对与js的面向对象、闭包、继承等还是有点不不理解,或者说理解的比较费劲;在导师的建议下暂时没有深究这些,先把基础的活用了,然后那些比较费劲的就在脑海的潜意识当中了。
后来,第三版出来了,我索性自己买了一本,然后再一次从头到尾逐行逐句读了80%的内容。把之前读到但又忘记了的内容温习了一般,并且攻克了之前不理解的部分,并且对之前理解了的部分又有了新的认识。至此,我对JavaScript的理解还是比较浅薄的。后来我就有针对性地在书中选择我不太理解的部分,并参照其他资料合并理解,同时也会自己写各种demo来验证。结果呢,我的本地文件夹、有道云笔记、线上项目里,都有我研究和学习的很多痕迹或者记录。算起来也有了一定的积累,但是我知道还远远不够。重要的书籍看三遍!
我开始换另一个角度来阅读这本书,就是以作者的角度,我开始思考,如果让我来布局这本书的章节,我该如何分配呢?我可不可以用另一种写法让读者更够更容易理解呢?我开始问各种为什么,开始对比:到底哪种继承方式好呢?各有千秋?sort里面用的是什么排序算法呢?indexOf的复杂度是多少呢?慢慢的我发现,这本书已经满足不了我的各种疑问了,于是我就在想,不能在一棵树上吊死哈,然后就浏览了其他书籍,后来发现质量参差不齐,但是内容大同小异。重要的书籍读三遍,我又回来翻阅了《JavaScript 高级程序设计》这本经典之作,又发现了新东西,原来自己还是太浅薄了,之前还是阅读得太粗糙了,只要你用心去看,总能发现新的知识。这本书里面仍然有很多我比较生疏的东西,而且也牵引出前端开发领域相关的知识,只要你去挖掘,一句话都可以让你研究一天。然后我真的要感叹一句话:越学习越发现自己无知!
一入前端深似海!任何一个领域,都有由浅入深、厚积薄发的过程,一本好书,值得我们去咀嚼无数遍,温故知新,stay hungry,stay foolish。《JavaScript 高级程序设计》这本书是我踏入前端开发之路的思想启蒙,而这却是一切的开端,前端开发远非如此,我会用阅读这本书的态度去阅读其他书籍。
不要问我从哪里来,我的故乡在远方。记录下我开始的地方,便只顾风雨兼程了。
记住哦,重要的书籍读”三遍“。